Skip to content

Commit

Permalink
fix(vite): unexptected overwriting for default export fix(#4553) (#4596)
Browse files Browse the repository at this point in the history
* fix(vite): unexptected overwriting for default export fix(#4553)

* feat: add test

* feat: delete unused package
  • Loading branch information
hyf0 committed Aug 16, 2021
1 parent 8b85f5f commit c7929ad
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 16 deletions.
12 changes: 12 additions & 0 deletions packages/playground/optimize-deps/__tests__/optimize-deps.spec.ts
Expand Up @@ -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')
Expand Down
12 changes: 12 additions & 0 deletions packages/playground/optimize-deps/cjs-dynamic.js
Expand Up @@ -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)

Expand Down
@@ -0,0 +1,5 @@
'use strict'
function foo() {
return 'foo'
}
module.exports = foo
@@ -0,0 +1,5 @@
{
"name": "dep-cjs-compiled-from-cjs",
"version": "0.0.0",
"main": "index.js"
}
@@ -0,0 +1,6 @@
'use strict'
Object.defineProperty(exports, '__esModule', { value: true })
function foo() {
return 'foo'
}
exports.default = foo
@@ -0,0 +1,5 @@
{
"name": "dep-cjs-compiled-from-esm",
"version": "0.0.0",
"main": "index.js"
}
4 changes: 4 additions & 0 deletions packages/playground/optimize-deps/index.html
Expand Up @@ -15,6 +15,10 @@ <h2>CommonJS dynamic import named (phoenix)</h2>
<div class="cjs-dynamic-phoenix"></div>
<h2>CommonJS dynamic import default (clipboard)</h2>
<div class="cjs-dynamic-clipboard"></div>
<h2>CommonJS dynamic import default (dep-cjs-compiled-from-esm)</h2>
<div class="cjs-dynamic-dep-cjs-compiled-from-esm"></div>
<h2>CommonJS dynamic import default (dep-cjs-compiled-from-cjs)</h2>
<div class="cjs-dynamic-dep-cjs-compiled-from-cjs"></div>

<script type="module" src="./cjs-dynamic.js"></script>

Expand Down
3 changes: 2 additions & 1 deletion packages/playground/optimize-deps/package.json
Expand Up @@ -11,10 +11,11 @@
"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",
"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",
Expand Down
2 changes: 1 addition & 1 deletion packages/vite/src/node/plugins/importAnalysis.ts
Expand Up @@ -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)
Expand Down
41 changes: 27 additions & 14 deletions yarn.lock
Expand Up @@ -2637,7 +2637,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"
Expand Down Expand Up @@ -2821,24 +2822,27 @@ delegate@^3.1.2:
resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==

"dep-cjs-named-only@link:./packages/playground/optimize-deps/dep-cjs-named-only":
"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-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"
Expand Down Expand Up @@ -6556,13 +6560,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"
Expand All @@ -6572,10 +6579,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"
Expand Down Expand Up @@ -7317,13 +7326,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"
Expand Down Expand Up @@ -7577,6 +7589,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"
Expand Down

0 comments on commit c7929ad

Please sign in to comment.