mirror of
https://github.com/vitejs/vite.git
synced 2024-11-21 14:48:41 +00:00
fix: skip injecting __vite__mapDeps
when it's not used (#16271)
This commit is contained in:
parent
cdc664d4ea
commit
890538a694
@ -498,20 +498,23 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin {
|
||||
s.update(
|
||||
markerStartPos,
|
||||
markerStartPos + preloadMarker.length + 2,
|
||||
`__vite__mapDeps([${renderedDeps.join(',')}])`,
|
||||
renderedDeps.length > 0
|
||||
? `__vite__mapDeps([${renderedDeps.join(',')}])`
|
||||
: `[]`,
|
||||
)
|
||||
rewroteMarkerStartPos.add(markerStartPos)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const fileDepsCode = `[${fileDeps
|
||||
.map((fileDep) =>
|
||||
fileDep.runtime ? fileDep.url : JSON.stringify(fileDep.url),
|
||||
)
|
||||
.join(',')}]`
|
||||
if (fileDeps.length > 0) {
|
||||
const fileDepsCode = `[${fileDeps
|
||||
.map((fileDep) =>
|
||||
fileDep.runtime ? fileDep.url : JSON.stringify(fileDep.url),
|
||||
)
|
||||
.join(',')}]`
|
||||
|
||||
const mapDepsCode = `\
|
||||
const mapDepsCode = `\
|
||||
function __vite__mapDeps(indexes) {
|
||||
if (!__vite__mapDeps.viteFileDeps) {
|
||||
__vite__mapDeps.viteFileDeps = ${fileDepsCode}
|
||||
@ -519,11 +522,12 @@ function __vite__mapDeps(indexes) {
|
||||
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
|
||||
}\n`
|
||||
|
||||
// inject extra code at the top or next line of hashbang
|
||||
if (code.startsWith('#!')) {
|
||||
s.prependLeft(code.indexOf('\n') + 1, mapDepsCode)
|
||||
} else {
|
||||
s.prepend(mapDepsCode)
|
||||
// inject extra code at the top or next line of hashbang
|
||||
if (code.startsWith('#!')) {
|
||||
s.prependLeft(code.indexOf('\n') + 1, mapDepsCode)
|
||||
} else {
|
||||
s.prepend(mapDepsCode)
|
||||
}
|
||||
}
|
||||
|
||||
// there may still be markers due to inlined dynamic imports, remove
|
||||
|
@ -152,9 +152,22 @@ describe.runIf(isBuild)('build tests', () => {
|
||||
}
|
||||
`)
|
||||
// verify sourcemap comment is preserved at the last line
|
||||
const js = findAssetFile(/after-preload-dynamic.*\.js$/)
|
||||
const js = findAssetFile(/after-preload-dynamic-[-\w]{8}\.js$/)
|
||||
expect(js).toMatch(
|
||||
/\n\/\/# sourceMappingURL=after-preload-dynamic.*\.js\.map\n$/,
|
||||
/\n\/\/# sourceMappingURL=after-preload-dynamic-[-\w]{8}\.js\.map\n$/,
|
||||
)
|
||||
})
|
||||
|
||||
test('__vite__mapDeps injected after banner', async () => {
|
||||
const js = findAssetFile(/after-preload-dynamic-hashbang-[-\w]{8}\.js$/)
|
||||
expect(js.split('\n').slice(0, 2)).toEqual([
|
||||
'#!/usr/bin/env node',
|
||||
'function __vite__mapDeps(indexes) {',
|
||||
])
|
||||
})
|
||||
|
||||
test('no unused __vite__mapDeps', async () => {
|
||||
const js = findAssetFile(/after-preload-dynamic-no-dep-[-\w]{8}\.js$/)
|
||||
expect(js).not.toMatch(/__vite__mapDeps/)
|
||||
})
|
||||
})
|
||||
|
3
playground/js-sourcemap/after-preload-dynamic-no-dep.js
Normal file
3
playground/js-sourcemap/after-preload-dynamic-no-dep.js
Normal file
@ -0,0 +1,3 @@
|
||||
import('./dynamic/dynamic-no-dep')
|
||||
|
||||
console.log('after preload dynamic no dep')
|
1
playground/js-sourcemap/dynamic/dynamic-no-dep.js
Normal file
1
playground/js-sourcemap/dynamic/dynamic-no-dep.js
Normal file
@ -0,0 +1 @@
|
||||
console.log('dynamic/dynamic-no-dep')
|
@ -7,5 +7,6 @@
|
||||
<script type="module" src="./bar.ts"></script>
|
||||
<script type="module" src="./after-preload-dynamic.js"></script>
|
||||
<script type="module" src="./after-preload-dynamic-hashbang.js"></script>
|
||||
<script type="module" src="./after-preload-dynamic-no-dep.js"></script>
|
||||
<script type="module" src="./with-multiline-import.ts"></script>
|
||||
<script type="module" src="./zoo.js"></script>
|
||||
|
@ -18,6 +18,9 @@ export default defineConfig({
|
||||
if (name.endsWith('after-preload-dynamic-hashbang.js')) {
|
||||
return 'after-preload-dynamic-hashbang'
|
||||
}
|
||||
if (name.endsWith('after-preload-dynamic-no-dep.js')) {
|
||||
return 'after-preload-dynamic-no-dep'
|
||||
}
|
||||
},
|
||||
banner(chunk) {
|
||||
if (chunk.name.endsWith('after-preload-dynamic-hashbang')) {
|
||||
|
Loading…
Reference in New Issue
Block a user