| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- import { configDefaults } from 'vitest/config'
- import { defineConfig } from 'vite-plus'
- import { entries } from './scripts/aliases.js'
- export default defineConfig({
- define: {
- __DEV__: process.env.MODE !== 'benchmark',
- __TEST__: true,
- __E2E_TEST__: false,
- __VERSION__: '"test"',
- __BROWSER__: false,
- __GLOBAL__: false,
- __ESM_BUNDLER__: true,
- __ESM_BROWSER__: false,
- __CJS__: true,
- __SSR__: true,
- __BENCHMARK__: false,
- __FEATURE_OPTIONS_API__: true,
- __FEATURE_SUSPENSE__: true,
- __FEATURE_PROD_DEVTOOLS__: false,
- __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: false,
- __COMPAT__: true,
- },
- resolve: {
- alias: entries,
- },
- test: {
- globals: true,
- pool: 'threads',
- setupFiles: 'scripts/setup-vitest.ts',
- sequence: {
- hooks: 'list',
- },
- coverage: {
- provider: 'v8',
- reporter: ['text', 'html'],
- include: ['packages/*/src/**'],
- exclude: [
- 'packages/vue-compat/**',
- 'packages/vue/src/dev.ts',
- 'packages/vue/src/runtime.ts',
- 'packages/vue/src/runtime-with-vapor.ts',
- 'packages/vue/src/index-with-vapor.ts',
- 'packages/runtime-core/src/profiling.ts',
- 'packages/runtime-core/src/featureFlags.ts',
- 'packages/runtime-core/src/customFormatter.ts',
- 'packages/runtime-core/src/hydrationStrategies.ts',
- 'packages/runtime-dom/src/components/Transition*',
- 'packages/runtime-vapor/src/components/Transition*',
- ],
- },
- projects: [
- {
- extends: true,
- test: {
- name: 'unit-gc',
- pool: 'forks',
- execArgv: ['--expose-gc'],
- include: ['packages/reactivity/__tests__/gc.spec.ts'],
- },
- },
- {
- extends: true,
- test: {
- name: 'unit',
- exclude: [
- ...configDefaults.exclude,
- 'packages/reactivity/__tests__/gc.spec.ts',
- '**/e2e/**',
- '**/vapor-e2e-test/**',
- 'packages/{vue,vue-compat,runtime-dom,runtime-vapor}/**',
- ],
- },
- },
- {
- extends: true,
- test: {
- name: 'unit-jsdom',
- environment: 'jsdom',
- include: [
- 'packages/{vue,vue-compat,runtime-dom,runtime-vapor}/**/*.spec.ts',
- ],
- exclude: [...configDefaults.exclude, '**/e2e/**'],
- },
- },
- {
- extends: true,
- test: {
- name: 'e2e',
- environment: 'jsdom',
- isolate: true,
- include: ['packages/vue/__tests__/e2e/*.spec.ts'],
- },
- },
- {
- extends: true,
- test: {
- name: 'e2e-vapor',
- isolate: true,
- include: ['packages-private/vapor-e2e-test/__tests__/*.spec.ts'],
- },
- },
- ],
- },
- staged: {
- '*.{js,json}': ['vp fmt --no-error-on-unmatched-pattern'],
- '*.ts?(x)': ['vp lint --fix', 'vp fmt --no-error-on-unmatched-pattern'],
- },
- lint: {
- categories: {
- correctness: 'off',
- },
- env: {
- builtin: true,
- },
- ignorePatterns: [
- '**/dist/',
- '**/temp/',
- '**/coverage/',
- 'dts-build/packages',
- ],
- overrides: [
- {
- files: ['**/*.js', '**/*.ts', '**/*.tsx'],
- rules: {
- 'no-debugger': 'error',
- 'no-console': [
- 'error',
- {
- allow: ['warn', 'error', 'info'],
- },
- ],
- 'no-restricted-globals': [
- 'error',
- 'window',
- 'document',
- 'module',
- 'require',
- ],
- 'sort-imports': [
- 'error',
- {
- ignoreDeclarationSort: true,
- },
- ],
- '@typescript-eslint/prefer-ts-expect-error': 'error',
- '@typescript-eslint/consistent-type-imports': [
- 'error',
- {
- fixStyle: 'inline-type-imports',
- disallowTypeAnnotations: false,
- },
- ],
- '@typescript-eslint/no-import-type-side-effects': 'error',
- },
- },
- {
- files: ['packages/shared/**'],
- rules: {
- 'no-restricted-globals': 'off',
- },
- },
- {
- files: ['packages/{vue,vue-compat,runtime-*}/**'],
- rules: {
- 'no-restricted-globals': ['error', 'module', 'require'],
- 'oxc/no-optional-chaining': 'error',
- },
- },
- {
- files: ['packages/{compiler-*,server-renderer}/**'],
- rules: {
- 'no-restricted-globals': ['error', 'window', 'document'],
- 'oxc/no-const-enum': 'error',
- },
- },
- {
- files: [
- 'packages-private/template-explorer/**',
- 'packages-private/sfc-playground/**',
- ],
- rules: {
- 'no-restricted-globals': ['error', 'module', 'require'],
- 'oxc/no-const-enum': 'error',
- 'no-console': 'off',
- },
- },
- {
- files: ['*.js'],
- rules: {
- 'no-unused-vars': [
- 'error',
- {
- vars: 'all',
- args: 'none',
- },
- ],
- },
- },
- {
- files: [
- '**/__tests__/**',
- 'packages-private/dts-test/**',
- 'packages-private/dts-build-test/**',
- ],
- rules: {
- 'no-console': 'off',
- 'no-restricted-globals': 'off',
- 'no-unused-vars': 'off',
- 'oxc/no-optional-chaining': 'off',
- 'no-restricted-syntax': 'off',
- },
- globals: {
- suite: 'writable',
- test: 'writable',
- describe: 'writable',
- it: 'writable',
- expectTypeOf: 'writable',
- assertType: 'writable',
- expect: 'writable',
- assert: 'writable',
- chai: 'writable',
- vitest: 'writable',
- vi: 'writable',
- beforeAll: 'writable',
- afterAll: 'writable',
- beforeEach: 'writable',
- afterEach: 'writable',
- onTestFailed: 'writable',
- onTestFinished: 'writable',
- },
- },
- {
- files: [
- 'scripts/**',
- './*.{js,ts}',
- 'packages/*/*.js',
- 'packages/vue/*/*.js',
- 'packages-private/benchmark/*',
- 'packages-private/e2e-utils/*',
- ],
- rules: {
- 'no-restricted-globals': 'off',
- 'oxc/no-const-enum': 'error',
- 'no-console': 'off',
- },
- },
- ],
- },
- fmt: {
- semi: false,
- singleQuote: true,
- arrowParens: 'avoid',
- printWidth: 80,
- experimentalSortPackageJson: false,
- ignorePatterns: ['dist', 'CHANGELOG*.md', '*.toml'],
- },
- })
|