From 311a374f8686ecc9849e4c2380affefa1aae4a4a Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Fri, 13 Aug 2021 22:17:42 +0800 Subject: [PATCH 1/3] fix(vite): unexptected overwriting for default export fix(#4553) --- packages/vite/src/node/plugins/importAnalysis.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index f3b8396dcbf338..3d14e3062b0f54 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -377,7 +377,7 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { str().overwrite( dynamicIndex, end + 1, - `import('${url}').then(m => ({ ...m.default, default: m.default }))` + `import('${url}').then(m => m.default && m.default.__esModule ? m.default : ({ ...m.default, default: m.default }))` ) } else { const exp = source.slice(expStart, expEnd) From 0f80c6ffa12e1065ee438b29eeb36fa4212ac279 Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Sat, 14 Aug 2021 14:01:43 +0800 Subject: [PATCH 2/3] feat: add test --- .../__tests__/optimize-deps.spec.ts | 12 ++++++ .../playground/optimize-deps/cjs-dynamic.js | 12 ++++++ .../dep-cjs-compiled-from-cjs/index.js | 5 +++ .../dep-cjs-compiled-from-cjs/package.json | 5 +++ .../dep-cjs-compiled-from-esm/index.js | 6 +++ .../dep-cjs-compiled-from-esm/package.json | 5 +++ packages/playground/optimize-deps/index.html | 4 ++ .../playground/optimize-deps/package.json | 2 + yarn.lock | 43 +++++++++++++------ 9 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/index.js create mode 100644 packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/package.json create mode 100644 packages/playground/optimize-deps/dep-cjs-compiled-from-esm/index.js create mode 100644 packages/playground/optimize-deps/dep-cjs-compiled-from-esm/package.json diff --git a/packages/playground/optimize-deps/__tests__/optimize-deps.spec.ts b/packages/playground/optimize-deps/__tests__/optimize-deps.spec.ts index 0a37ffc9df36be..d683e64e9f2296 100644 --- a/packages/playground/optimize-deps/__tests__/optimize-deps.spec.ts +++ b/packages/playground/optimize-deps/__tests__/optimize-deps.spec.ts @@ -28,6 +28,18 @@ test('dynamic default import from webpacked cjs (clipboard)', async () => { expect(await page.textContent('.cjs-dynamic-clipboard')).toBe('ok') }) +test('dynamic default import from cjs (cjs-dynamic-dep-cjs-compiled-from-esm)', async () => { + expect(await page.textContent('.cjs-dynamic-dep-cjs-compiled-from-esm')).toBe( + 'ok' + ) +}) + +test('dynamic default import from cjs (cjs-dynamic-dep-cjs-compiled-from-cjs)', async () => { + expect(await page.textContent('.cjs-dynamic-dep-cjs-compiled-from-cjs')).toBe( + 'ok' + ) +}) + test('dedupe', async () => { expect(await page.textContent('.dedupe button')).toBe('count is 0') await page.click('.dedupe button') diff --git a/packages/playground/optimize-deps/cjs-dynamic.js b/packages/playground/optimize-deps/cjs-dynamic.js index 4d3856d8f69a92..91dc5a964d5481 100644 --- a/packages/playground/optimize-deps/cjs-dynamic.js +++ b/packages/playground/optimize-deps/cjs-dynamic.js @@ -16,6 +16,18 @@ text('.cjs-dynamic-phoenix', 'ok') } + const cjsFromESM = await import('dep-cjs-compiled-from-esm') + console.log('cjsFromESM', cjsFromESM) + if (typeof cjsFromESM.default === 'function') { + text('.cjs-dynamic-dep-cjs-compiled-from-esm', 'ok') + } + + const cjsFromCJS = await import('dep-cjs-compiled-from-cjs') + console.log('cjsFromCJS', cjsFromCJS) + if (typeof cjsFromCJS.default === 'function') { + text('.cjs-dynamic-dep-cjs-compiled-from-cjs', 'ok') + } + function App() { const [count, setCount] = useState(0) diff --git a/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/index.js b/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/index.js new file mode 100644 index 00000000000000..38d4c85c7c33ce --- /dev/null +++ b/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/index.js @@ -0,0 +1,5 @@ +'use strict' +function foo() { + return 'foo' +} +module.exports = foo diff --git a/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/package.json b/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/package.json new file mode 100644 index 00000000000000..c27c7b3b73cf91 --- /dev/null +++ b/packages/playground/optimize-deps/dep-cjs-compiled-from-cjs/package.json @@ -0,0 +1,5 @@ +{ + "name": "dep-cjs-compiled-from-cjs", + "version": "0.0.0", + "main": "index.js" +} diff --git a/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/index.js b/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/index.js new file mode 100644 index 00000000000000..ae3c4bd1b2fa50 --- /dev/null +++ b/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/index.js @@ -0,0 +1,6 @@ +'use strict' +Object.defineProperty(exports, '__esModule', { value: true }) +function foo() { + return 'foo' +} +exports.default = foo diff --git a/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/package.json b/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/package.json new file mode 100644 index 00000000000000..cd016d330d1095 --- /dev/null +++ b/packages/playground/optimize-deps/dep-cjs-compiled-from-esm/package.json @@ -0,0 +1,5 @@ +{ + "name": "dep-cjs-compiled-from-esm", + "version": "0.0.0", + "main": "index.js" +} diff --git a/packages/playground/optimize-deps/index.html b/packages/playground/optimize-deps/index.html index dc0345e6a6f482..59b36a6c9c3466 100644 --- a/packages/playground/optimize-deps/index.html +++ b/packages/playground/optimize-deps/index.html @@ -15,6 +15,10 @@

CommonJS dynamic import named (phoenix)

CommonJS dynamic import default (clipboard)

+

CommonJS dynamic import default (dep-cjs-compiled-from-esm)

+
+

CommonJS dynamic import default (dep-cjs-compiled-from-cjs)

+
diff --git a/packages/playground/optimize-deps/package.json b/packages/playground/optimize-deps/package.json index a9644619d74994..31ac2b8919aca9 100644 --- a/packages/playground/optimize-deps/package.json +++ b/packages/playground/optimize-deps/package.json @@ -15,6 +15,8 @@ "dep-linked": "link:./dep-linked", "dep-linked-include": "link:./dep-linked-include", "dep-esbuild-plugin-transform": "link:./dep-esbuild-plugin-transform", + "dep-cjs-compiled-from-esm": "file:./dep-cjs-compiled-from-esm", + "dep-cjs-compiled-from-cjs": "file:./dep-cjs-compiled-from-cjs", "phoenix": "^1.5.7", "react": "^17.0.1", "react-dom": "^17.0.1", diff --git a/yarn.lock b/yarn.lock index c52adc98f4e11a..e1cf15018987f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2655,7 +2655,8 @@ css-color-names@^1.0.1: integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== "css-dep@link:./packages/playground/css/css-dep": - version "1.0.0" + version "0.0.0" + uid "" css-parse@~2.0.0: version "2.0.0" @@ -2839,24 +2840,31 @@ delegate@^3.1.2: resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== +"dep-cjs-compiled-from-cjs@file:./packages/playground/optimize-deps/dep-cjs-compiled-from-cjs": + version "0.0.0" + +"dep-cjs-compiled-from-esm@file:./packages/playground/optimize-deps/dep-cjs-compiled-from-esm": + version "0.0.0" + "dep-cjs-named-only@link:./packages/playground/optimize-deps/dep-cjs-named-only": version "0.0.0" + uid "" "dep-esbuild-plugin-transform@link:./packages/playground/optimize-deps/dep-esbuild-plugin-transform": version "0.0.0" + uid "" "dep-import-type@link:./packages/playground/ssr-vue/dep-import-type": version "0.0.0" + uid "" "dep-linked-include@link:./packages/playground/optimize-deps/dep-linked-include": version "0.0.0" - dependencies: - react "17.0.0" + uid "" "dep-linked@link:./packages/playground/optimize-deps/dep-linked": version "0.0.0" - dependencies: - lodash-es "^4.17.20" + uid "" depd@~1.1.2: version "1.1.2" @@ -6604,13 +6612,16 @@ requires-port@^1.0.0: integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= "resolve-browser-field@link:./packages/playground/resolve/browser-field": - version "1.0.0" + version "0.0.0" + uid "" "resolve-custom-condition@link:./packages/playground/resolve/custom-condition": - version "1.0.0" + version "0.0.0" + uid "" "resolve-custom-main-field@link:./packages/playground/resolve/custom-main-field": - version "1.0.0" + version "0.0.0" + uid "" resolve-cwd@^3.0.0: version "3.0.0" @@ -6620,10 +6631,12 @@ resolve-cwd@^3.0.0: resolve-from "^5.0.0" "resolve-exports-env@link:./packages/playground/resolve/exports-env": - version "1.0.0" + version "0.0.0" + uid "" "resolve-exports-path@link:./packages/playground/resolve/exports-path": - version "1.0.0" + version "0.0.0" + uid "" resolve-from@^4.0.0: version "4.0.0" @@ -7370,13 +7383,16 @@ test-exclude@^6.0.0: minimatch "^3.0.4" "test-package-a@link:./packages/playground/nested-deps/test-package-a": - version "2.0.0" + version "0.0.0" + uid "" "test-package-b@link:./packages/playground/nested-deps/test-package-b": - version "1.0.0" + version "0.0.0" + uid "" "test-package-c@link:./packages/playground/nested-deps/test-package-c": - version "1.0.0" + version "0.0.0" + uid "" text-extensions@^1.0.0: version "1.9.0" @@ -7630,6 +7646,7 @@ typedarray-to-buffer@^3.1.5: "types@link:./packages/vite/types": version "0.0.0" + uid "" typescript@^4.3.5, typescript@~4.3.5: version "4.3.5" From d6cad3625cfeb8b3486187a2420cafd0935b4cf7 Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Sat, 14 Aug 2021 14:11:19 +0800 Subject: [PATCH 3/3] feat: delete unused package --- packages/playground/optimize-deps/package.json | 1 - yarn.lock | 4 ---- 2 files changed, 5 deletions(-) diff --git a/packages/playground/optimize-deps/package.json b/packages/playground/optimize-deps/package.json index 31ac2b8919aca9..74fc4248db94d1 100644 --- a/packages/playground/optimize-deps/package.json +++ b/packages/playground/optimize-deps/package.json @@ -11,7 +11,6 @@ "dependencies": { "axios": "^0.21.1", "clipboard": "^2.0.6", - "dep-cjs-named-only": "link:./dep-cjs-named-only", "dep-linked": "link:./dep-linked", "dep-linked-include": "link:./dep-linked-include", "dep-esbuild-plugin-transform": "link:./dep-esbuild-plugin-transform", diff --git a/yarn.lock b/yarn.lock index e1cf15018987f9..6021d94a510c5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2846,10 +2846,6 @@ delegate@^3.1.2: "dep-cjs-compiled-from-esm@file:./packages/playground/optimize-deps/dep-cjs-compiled-from-esm": version "0.0.0" -"dep-cjs-named-only@link:./packages/playground/optimize-deps/dep-cjs-named-only": - version "0.0.0" - uid "" - "dep-esbuild-plugin-transform@link:./packages/playground/optimize-deps/dep-esbuild-plugin-transform": version "0.0.0" uid ""