From c7d74fba02369dba0209e68d81195de8803b78eb Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:42:49 +0900 Subject: [PATCH 1/5] feat: support `module-sync` condition when loading config if enabled --- packages/vite/misc/false.d.ts | 2 ++ packages/vite/misc/false.js | 1 + packages/vite/misc/true.d.ts | 2 ++ packages/vite/misc/true.js | 1 + packages/vite/package.json | 19 ++++++++++--------- packages/vite/src/node/config.ts | 7 ++++++- 6 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 packages/vite/misc/false.d.ts create mode 100644 packages/vite/misc/false.js create mode 100644 packages/vite/misc/true.d.ts create mode 100644 packages/vite/misc/true.js diff --git a/packages/vite/misc/false.d.ts b/packages/vite/misc/false.d.ts new file mode 100644 index 00000000000000..b2ba15eb1e7fc3 --- /dev/null +++ b/packages/vite/misc/false.d.ts @@ -0,0 +1,2 @@ +declare const result: boolean +export default result diff --git a/packages/vite/misc/false.js b/packages/vite/misc/false.js new file mode 100644 index 00000000000000..2693369b44337b --- /dev/null +++ b/packages/vite/misc/false.js @@ -0,0 +1 @@ +export default false diff --git a/packages/vite/misc/true.d.ts b/packages/vite/misc/true.d.ts new file mode 100644 index 00000000000000..b2ba15eb1e7fc3 --- /dev/null +++ b/packages/vite/misc/true.d.ts @@ -0,0 +1,2 @@ +declare const result: boolean +export default result diff --git a/packages/vite/misc/true.js b/packages/vite/misc/true.js new file mode 100644 index 00000000000000..186b120756be19 --- /dev/null +++ b/packages/vite/misc/true.js @@ -0,0 +1 @@ +export default true diff --git a/packages/vite/package.json b/packages/vite/package.json index 2f9e9bbf43eb3b..1a98c7b17cef3b 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -20,20 +20,14 @@ "types": "./dist/node/index.d.ts", "exports": { ".": { - "import": { - "types": "./dist/node/index.d.ts", - "default": "./dist/node/index.js" - }, - "require": { - "types": "./index.d.cts", - "default": "./index.cjs" - } + "module-sync": "./dist/node/index.js", + "import": "./dist/node/index.js", + "require": "./index.cjs" }, "./client": { "types": "./client.d.ts" }, "./module-runner": { - "types": "./dist/node/module-runner.d.ts", "import": "./dist/node/module-runner.js" }, "./dist/client/*": "./dist/client/*", @@ -50,9 +44,16 @@ ] } }, + "imports": { + "#module-sync-enabled": { + "module-sync": "./misc/true.js", + "default": "./misc/false.js" + } + }, "files": [ "bin", "dist", + "misc/**/*.js", "client.d.ts", "index.cjs", "index.d.cts", diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index ca3fa85f0ad62a..51555c3d36ad48 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -1697,6 +1697,8 @@ async function bundleConfigFile( fileName: string, isESM: boolean, ): Promise<{ code: string; dependencies: string[] }> { + const isModuleSyncConditionEnabled = await import('#module-sync-enabled') + const dirnameVarName = '__vite_injected_original_dirname' const filenameVarName = '__vite_injected_original_filename' const importMetaUrlVarName = '__vite_injected_original_import_meta_url' @@ -1735,7 +1737,10 @@ async function bundleConfigFile( preferRelative: false, tryIndex: true, mainFields: [], - conditions: ['node'], + conditions: [ + 'node', + ...(isModuleSyncConditionEnabled ? ['module-sync'] : []), + ], externalConditions: [], external: [], noExternal: [], From 0a750fc05bc0e7bca80e124b2e841c26368e8c6e Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:47:40 +0900 Subject: [PATCH 2/5] chore: fix TS build --- packages/vite/tsconfig.base.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vite/tsconfig.base.json b/packages/vite/tsconfig.base.json index 15fcd2c74e2a9e..9f6629981f2921 100644 --- a/packages/vite/tsconfig.base.json +++ b/packages/vite/tsconfig.base.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "rootDir": ".", "target": "ES2022", "module": "ESNext", "moduleResolution": "Bundler", From 070c58b760dc1e999838e70b8f2ba95214c18cdb Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 13 Nov 2024 12:59:46 +0900 Subject: [PATCH 3/5] chore: fix TS build --- packages/vite/rollup.dts.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vite/rollup.dts.config.ts b/packages/vite/rollup.dts.config.ts index fd09273f780e8f..e622053ba156ba 100644 --- a/packages/vite/rollup.dts.config.ts +++ b/packages/vite/rollup.dts.config.ts @@ -24,8 +24,8 @@ const external = [ export default defineConfig({ input: { - index: './temp/node/index.d.ts', - 'module-runner': './temp/module-runner/index.d.ts', + index: './temp/src/node/index.d.ts', + 'module-runner': './temp/src/module-runner/index.d.ts', }, output: { dir: './dist/node', From 5a9c5ec3f010d24df01cf50e037f5faca339ed5c Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:47:30 +0900 Subject: [PATCH 4/5] chore: fix build --- packages/vite/rollup.config.ts | 1 + packages/vite/src/node/config.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/vite/rollup.config.ts b/packages/vite/rollup.config.ts index 59d569bfc8f4d0..6f253ce4aa6bf1 100644 --- a/packages/vite/rollup.config.ts +++ b/packages/vite/rollup.config.ts @@ -111,6 +111,7 @@ const nodeConfig = defineConfig({ /^vite\//, 'rollup/parseAst', /^tsx\//, + /^#/, ...Object.keys(pkg.dependencies), ...Object.keys(pkg.peerDependencies), ], diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 51555c3d36ad48..e066a92155c115 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -1697,7 +1697,8 @@ async function bundleConfigFile( fileName: string, isESM: boolean, ): Promise<{ code: string; dependencies: string[] }> { - const isModuleSyncConditionEnabled = await import('#module-sync-enabled') + const isModuleSyncConditionEnabled = (await import('#module-sync-enabled')) + .default const dirnameVarName = '__vite_injected_original_dirname' const filenameVarName = '__vite_injected_original_filename' From b534b45a86e60b05e747c1612780a6ccd98265f1 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:16:31 +0900 Subject: [PATCH 5/5] refactor: remove `import` condition from `module-runner` export --- packages/vite/package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/vite/package.json b/packages/vite/package.json index 1a98c7b17cef3b..58065aed7190c5 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -27,9 +27,7 @@ "./client": { "types": "./client.d.ts" }, - "./module-runner": { - "import": "./dist/node/module-runner.js" - }, + "./module-runner": "./dist/node/module-runner.js", "./dist/client/*": "./dist/client/*", "./types/*": { "types": "./types/*"