You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.6 KiB

  1. import { configDefaults, defineConfig, UserConfig } from 'vitest/config'
  2. import path from 'node:path'
  3. import { fileURLToPath } from 'node:url'
  4. import { readdirSync } from 'node:fs'
  5. const resolve = p =>
  6. path.resolve(fileURLToPath(import.meta.url), `../packages/${p}/src/index.ts`)
  7. const dirs = readdirSync(new URL('./packages', import.meta.url))
  8. const alias = {
  9. vue: resolve('vue'),
  10. 'vue/compiler-sfc': resolve('compiler-sfc'),
  11. 'vue/server-renderer': resolve('server-renderer'),
  12. '@vue/compat': resolve('vue-compat')
  13. }
  14. for (const dir of dirs) {
  15. const key = `@vue/${dir}`
  16. if (dir !== 'vue' && !(key in alias)) {
  17. alias[key] = resolve(dir)
  18. }
  19. }
  20. export default defineConfig({
  21. define: {
  22. __DEV__: true,
  23. __TEST__: true,
  24. __VERSION__: '"test"',
  25. __BROWSER__: false,
  26. __GLOBAL__: false,
  27. __ESM_BUNDLER__: true,
  28. __ESM_BROWSER__: false,
  29. __NODE_JS__: true,
  30. __SSR__: true,
  31. __FEATURE_OPTIONS_API__: true,
  32. __FEATURE_SUSPENSE__: true,
  33. __FEATURE_PROD_DEVTOOLS__: false,
  34. __COMPAT__: true
  35. },
  36. resolve: {
  37. alias
  38. },
  39. test: {
  40. globals: true,
  41. threads: false,
  42. setupFiles: 'scripts/setupVitest.ts',
  43. environmentMatchGlobs: [
  44. ['packages/{vue,vue-compat,runtime-dom}/**', 'jsdom']
  45. ],
  46. sequence: {
  47. hooks: 'list'
  48. },
  49. coverage: {
  50. provider: 'istanbul',
  51. reporter: ['text', 'html'],
  52. exclude: [
  53. ...configDefaults.coverage.exclude!,
  54. // DOM transitions are tested via e2e so no coverage is collected
  55. 'packages/runtime-dom/src/components/Transition*',
  56. // mostly entries
  57. 'packages/vue-compat/**'
  58. ]
  59. }
  60. }
  61. }) as UserConfig