diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 95b986ebfe5d8e..d7f6491ceb7306 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -515,12 +515,12 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { .join(',')}]` const mapDepsCode = `\ - function __vite__mapDeps(indexes) { - if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ${fileDepsCode} - } - return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) - }\n` +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ${fileDepsCode} + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +}\n` // inject extra code at the top or next line of hashbang if (code.startsWith('#!')) { diff --git a/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts b/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts index fd5d91a26af1b1..f21ace14adab60 100644 --- a/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts +++ b/playground/js-sourcemap/__tests__/js-sourcemap.spec.ts @@ -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/) + }) }) diff --git a/playground/js-sourcemap/after-preload-dynamic-no-dep.js b/playground/js-sourcemap/after-preload-dynamic-no-dep.js new file mode 100644 index 00000000000000..55f150702d02dc --- /dev/null +++ b/playground/js-sourcemap/after-preload-dynamic-no-dep.js @@ -0,0 +1,3 @@ +import('./dynamic/dynamic-no-dep') + +console.log('after preload dynamic no dep') diff --git a/playground/js-sourcemap/dynamic/dynamic-no-dep.js b/playground/js-sourcemap/dynamic/dynamic-no-dep.js new file mode 100644 index 00000000000000..d2291ff747319c --- /dev/null +++ b/playground/js-sourcemap/dynamic/dynamic-no-dep.js @@ -0,0 +1 @@ +console.log('dynamic/dynamic-no-dep') diff --git a/playground/js-sourcemap/index.html b/playground/js-sourcemap/index.html index 37ebf9397507c7..10afcc6c2d0807 100644 --- a/playground/js-sourcemap/index.html +++ b/playground/js-sourcemap/index.html @@ -7,5 +7,6 @@

JS Sourcemap

+ diff --git a/playground/js-sourcemap/vite.config.js b/playground/js-sourcemap/vite.config.js index ba1c3510fc23b5..0c6d09b8d8906f 100644 --- a/playground/js-sourcemap/vite.config.js +++ b/playground/js-sourcemap/vite.config.js @@ -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')) {