From b7da598dfd81fcc8b50ae0753ed646ceb51297d5 Mon Sep 17 00:00:00 2001 From: Nozomu Ikuta <16436160+NozomuIkuta@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:02:48 +0900 Subject: [PATCH 1/2] feat(config): support `.config` dir --- packages/vite/src/node/constants.ts | 3 +++ .../config-dir/__tests__/config-dir.spec.ts | 26 +++++++++++++++++++ playground/config-dir/__tests__/serve.ts | 3 +++ .../config-dir/packages/entry/.config/vite.ts | 7 +++++ .../config-dir/packages/entry/package.json | 7 +++++ .../plugin-module-condition/index.cjs | 1 + .../plugin-module-condition/index.d.ts | 2 ++ .../plugin-module-condition/index.mjs | 1 + .../plugin-module-condition/module.mjs | 1 + .../plugin-module-condition/package.json | 12 +++++++++ .../config-dir/packages/siblings/foo.ts | 3 +++ .../config-dir/packages/siblings/package.json | 8 ++++++ 12 files changed, 74 insertions(+) create mode 100644 playground/config-dir/__tests__/config-dir.spec.ts create mode 100644 playground/config-dir/__tests__/serve.ts create mode 100644 playground/config-dir/packages/entry/.config/vite.ts create mode 100644 playground/config-dir/packages/entry/package.json create mode 100644 playground/config-dir/packages/plugin-module-condition/index.cjs create mode 100644 playground/config-dir/packages/plugin-module-condition/index.d.ts create mode 100644 playground/config-dir/packages/plugin-module-condition/index.mjs create mode 100644 playground/config-dir/packages/plugin-module-condition/module.mjs create mode 100644 playground/config-dir/packages/plugin-module-condition/package.json create mode 100644 playground/config-dir/packages/siblings/foo.ts create mode 100644 playground/config-dir/packages/siblings/package.json diff --git a/packages/vite/src/node/constants.ts b/packages/vite/src/node/constants.ts index f729f9d6162298..3c6e5bf3391cdb 100644 --- a/packages/vite/src/node/constants.ts +++ b/packages/vite/src/node/constants.ts @@ -43,6 +43,9 @@ export const DEFAULT_CONFIG_FILES = [ 'vite.config.cjs', 'vite.config.mts', 'vite.config.cts', + '.config/vite.js', + '.config/vite.mjs', + '.config/vite.ts', ] export const JS_TYPES_RE = /\.(?:j|t)sx?$|\.mjs$/ diff --git a/playground/config-dir/__tests__/config-dir.spec.ts b/playground/config-dir/__tests__/config-dir.spec.ts new file mode 100644 index 00000000000000..6f10fbf421cb7e --- /dev/null +++ b/playground/config-dir/__tests__/config-dir.spec.ts @@ -0,0 +1,26 @@ +import { resolve } from 'node:path' +import { loadConfigFromFile } from 'vite' +import { expect, it } from 'vitest' + +it('loadConfigFromFile', async () => { + const { config } = await loadConfigFromFile( + {} as any, + resolve(__dirname, '../packages/entry/.config/vite.ts'), + resolve(__dirname, '../packages/entry'), + ) + expect(config).toMatchInlineSnapshot(` + { + "array": [ + [ + 1, + 3, + ], + [ + 2, + 4, + ], + ], + "moduleCondition": "import condition", + } + `) +}) diff --git a/playground/config-dir/__tests__/serve.ts b/playground/config-dir/__tests__/serve.ts new file mode 100644 index 00000000000000..e8959c0a1eda19 --- /dev/null +++ b/playground/config-dir/__tests__/serve.ts @@ -0,0 +1,3 @@ +export function serve() { + return +} diff --git a/playground/config-dir/packages/entry/.config/vite.ts b/playground/config-dir/packages/entry/.config/vite.ts new file mode 100644 index 00000000000000..82eca5ce5fb775 --- /dev/null +++ b/playground/config-dir/packages/entry/.config/vite.ts @@ -0,0 +1,7 @@ +import moduleCondition from '@vite/test-config-plugin-module-condition' +import { array } from '../../siblings/foo' + +export default { + array, + moduleCondition, +} diff --git a/playground/config-dir/packages/entry/package.json b/playground/config-dir/packages/entry/package.json new file mode 100644 index 00000000000000..bb0e07d0af7389 --- /dev/null +++ b/playground/config-dir/packages/entry/package.json @@ -0,0 +1,7 @@ +{ + "name": "@vite/test-config-entry", + "type": "module", + "dependencies": { + "@vite/test-config-plugin-module-condition": "link:../plugin-module-condition" + } +} diff --git a/playground/config-dir/packages/plugin-module-condition/index.cjs b/playground/config-dir/packages/plugin-module-condition/index.cjs new file mode 100644 index 00000000000000..082d40b7f30a06 --- /dev/null +++ b/playground/config-dir/packages/plugin-module-condition/index.cjs @@ -0,0 +1 @@ +module.exports = 'require condition' diff --git a/playground/config-dir/packages/plugin-module-condition/index.d.ts b/playground/config-dir/packages/plugin-module-condition/index.d.ts new file mode 100644 index 00000000000000..e04fab0f58f539 --- /dev/null +++ b/playground/config-dir/packages/plugin-module-condition/index.d.ts @@ -0,0 +1,2 @@ +const str: string +export default str diff --git a/playground/config-dir/packages/plugin-module-condition/index.mjs b/playground/config-dir/packages/plugin-module-condition/index.mjs new file mode 100644 index 00000000000000..a4386771448945 --- /dev/null +++ b/playground/config-dir/packages/plugin-module-condition/index.mjs @@ -0,0 +1 @@ +export default 'import condition' diff --git a/playground/config-dir/packages/plugin-module-condition/module.mjs b/playground/config-dir/packages/plugin-module-condition/module.mjs new file mode 100644 index 00000000000000..6361ab1059bd2d --- /dev/null +++ b/playground/config-dir/packages/plugin-module-condition/module.mjs @@ -0,0 +1 @@ +export default 'module condition' diff --git a/playground/config-dir/packages/plugin-module-condition/package.json b/playground/config-dir/packages/plugin-module-condition/package.json new file mode 100644 index 00000000000000..623a54914737cf --- /dev/null +++ b/playground/config-dir/packages/plugin-module-condition/package.json @@ -0,0 +1,12 @@ +{ + "name": "@vite/test-config-plugin-module-condition", + "type": "module", + "exports": { + ".": { + "types": "./index.d.ts", + "module": "./module.mjs", + "import": "./index.mjs", + "require": "./index.cjs" + } + } +} diff --git a/playground/config-dir/packages/siblings/foo.ts b/playground/config-dir/packages/siblings/foo.ts new file mode 100644 index 00000000000000..efc3b112053c58 --- /dev/null +++ b/playground/config-dir/packages/siblings/foo.ts @@ -0,0 +1,3 @@ +import lodash from 'lodash' + +export const array = lodash.partition([1, 2, 3, 4], (n) => n % 2) diff --git a/playground/config-dir/packages/siblings/package.json b/playground/config-dir/packages/siblings/package.json new file mode 100644 index 00000000000000..049019bd1abfd7 --- /dev/null +++ b/playground/config-dir/packages/siblings/package.json @@ -0,0 +1,8 @@ +{ + "name": "@vite/test-config-sibling", + "type": "module", + "devDependencies": { + "@types/lodash": "^4.17.0", + "lodash": "^4.17.21" + } +} From af3ca95ced943473535e167cfdd97b49be7f6e9d Mon Sep 17 00:00:00 2001 From: Nozomu Ikuta <16436160+NozomuIkuta@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:18:17 +0900 Subject: [PATCH 2/2] fix: fix playground deps --- .../config-dir/packages/entry/package.json | 2 +- .../index.cjs | 0 .../index.d.ts | 0 .../index.mjs | 0 .../module.mjs | 0 .../package.json | 2 +- .../config-dir/packages/siblings/package.json | 2 +- pnpm-lock.yaml | 17 +++++++++++++++++ 8 files changed, 20 insertions(+), 3 deletions(-) rename playground/config-dir/packages/{plugin-module-condition => plugin-config-dir-module-condition}/index.cjs (100%) rename playground/config-dir/packages/{plugin-module-condition => plugin-config-dir-module-condition}/index.d.ts (100%) rename playground/config-dir/packages/{plugin-module-condition => plugin-config-dir-module-condition}/index.mjs (100%) rename playground/config-dir/packages/{plugin-module-condition => plugin-config-dir-module-condition}/module.mjs (100%) rename playground/config-dir/packages/{plugin-module-condition => plugin-config-dir-module-condition}/package.json (75%) diff --git a/playground/config-dir/packages/entry/package.json b/playground/config-dir/packages/entry/package.json index bb0e07d0af7389..5fd53f15dd819b 100644 --- a/playground/config-dir/packages/entry/package.json +++ b/playground/config-dir/packages/entry/package.json @@ -2,6 +2,6 @@ "name": "@vite/test-config-entry", "type": "module", "dependencies": { - "@vite/test-config-plugin-module-condition": "link:../plugin-module-condition" + "@vite/test-config-plugin-module-condition": "link:../plugin-config-dir-module-condition" } } diff --git a/playground/config-dir/packages/plugin-module-condition/index.cjs b/playground/config-dir/packages/plugin-config-dir-module-condition/index.cjs similarity index 100% rename from playground/config-dir/packages/plugin-module-condition/index.cjs rename to playground/config-dir/packages/plugin-config-dir-module-condition/index.cjs diff --git a/playground/config-dir/packages/plugin-module-condition/index.d.ts b/playground/config-dir/packages/plugin-config-dir-module-condition/index.d.ts similarity index 100% rename from playground/config-dir/packages/plugin-module-condition/index.d.ts rename to playground/config-dir/packages/plugin-config-dir-module-condition/index.d.ts diff --git a/playground/config-dir/packages/plugin-module-condition/index.mjs b/playground/config-dir/packages/plugin-config-dir-module-condition/index.mjs similarity index 100% rename from playground/config-dir/packages/plugin-module-condition/index.mjs rename to playground/config-dir/packages/plugin-config-dir-module-condition/index.mjs diff --git a/playground/config-dir/packages/plugin-module-condition/module.mjs b/playground/config-dir/packages/plugin-config-dir-module-condition/module.mjs similarity index 100% rename from playground/config-dir/packages/plugin-module-condition/module.mjs rename to playground/config-dir/packages/plugin-config-dir-module-condition/module.mjs diff --git a/playground/config-dir/packages/plugin-module-condition/package.json b/playground/config-dir/packages/plugin-config-dir-module-condition/package.json similarity index 75% rename from playground/config-dir/packages/plugin-module-condition/package.json rename to playground/config-dir/packages/plugin-config-dir-module-condition/package.json index 623a54914737cf..b71198daf3f501 100644 --- a/playground/config-dir/packages/plugin-module-condition/package.json +++ b/playground/config-dir/packages/plugin-config-dir-module-condition/package.json @@ -1,5 +1,5 @@ { - "name": "@vite/test-config-plugin-module-condition", + "name": "@vite/test-config-dir-plugin-module-condition", "type": "module", "exports": { ".": { diff --git a/playground/config-dir/packages/siblings/package.json b/playground/config-dir/packages/siblings/package.json index 049019bd1abfd7..d8e769533fbcb7 100644 --- a/playground/config-dir/packages/siblings/package.json +++ b/playground/config-dir/packages/siblings/package.json @@ -1,5 +1,5 @@ { - "name": "@vite/test-config-sibling", + "name": "@vite/test-config-dir-sibling", "type": "module", "devDependencies": { "@types/lodash": "^4.17.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6da71fa032b95e..5e8da83c92c3f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -534,6 +534,23 @@ importers: specifier: ^0.11.3 version: 0.11.3 + playground/config-dir/packages/entry: + dependencies: + '@vite/test-config-plugin-module-condition': + specifier: link:../plugin-config-dir-module-condition + version: link:../plugin-config-dir-module-condition + + playground/config-dir/packages/plugin-config-dir-module-condition: {} + + playground/config-dir/packages/siblings: + devDependencies: + '@types/lodash': + specifier: ^4.17.0 + version: 4.17.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + playground/config/packages/entry: dependencies: '@vite/test-config-plugin-module-condition':