diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts
index b859319c0a81e3..41b9d1a80897e0 100644
--- a/packages/vite/src/node/optimizer/index.ts
+++ b/packages/vite/src/node/optimizer/index.ts
@@ -673,6 +673,25 @@ export function runOptimizeDeps(
browserHash: metadata.browserHash,
})
}
+ } else {
+ // workaround Firefox warning by removing blank source map reference
+ // https://github.com/evanw/esbuild/issues/3945
+ const output = meta.outputs[o]
+ // filter by exact bytes of an empty source map
+ if (output.bytes === 93) {
+ const jsMapPath = path.resolve(o)
+ const jsPath = jsMapPath.slice(0, -4)
+ if (fs.existsSync(jsPath) && fs.existsSync(jsMapPath)) {
+ const map = JSON.parse(fs.readFileSync(jsMapPath, 'utf-8'))
+ if (map.sources.length === 0) {
+ const js = fs.readFileSync(jsPath, 'utf-8')
+ fs.writeFileSync(
+ jsPath,
+ js.slice(0, js.lastIndexOf('//# sourceMappingURL=')),
+ )
+ }
+ }
+ }
}
}
diff --git a/playground/optimize-deps/dep-source-map-no-sources/all.js b/playground/optimize-deps/dep-source-map-no-sources/all.js
new file mode 100644
index 00000000000000..33b7c388d5f003
--- /dev/null
+++ b/playground/optimize-deps/dep-source-map-no-sources/all.js
@@ -0,0 +1,2 @@
+export const all = 'all'
+export { sub } from './sub.js'
diff --git a/playground/optimize-deps/dep-source-map-no-sources/package.json b/playground/optimize-deps/dep-source-map-no-sources/package.json
new file mode 100644
index 00000000000000..cd0db894af0ceb
--- /dev/null
+++ b/playground/optimize-deps/dep-source-map-no-sources/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@vitejs/test-dep-source-map-no-sources",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "exports": {
+ "./*": "./*"
+ }
+}
diff --git a/playground/optimize-deps/dep-source-map-no-sources/sub.js b/playground/optimize-deps/dep-source-map-no-sources/sub.js
new file mode 100644
index 00000000000000..125abf53cf2920
--- /dev/null
+++ b/playground/optimize-deps/dep-source-map-no-sources/sub.js
@@ -0,0 +1 @@
+export const sub = 'sub'
diff --git a/playground/optimize-deps/index.html b/playground/optimize-deps/index.html
index 10ca2dc0eac439..02a869c4e5a8a7 100644
--- a/playground/optimize-deps/index.html
+++ b/playground/optimize-deps/index.html
@@ -299,3 +299,9 @@
Pre-bundle transitive dependency 'some-package.pdf'
text('.dep-with-asset-ext-prebundled', isPreBundled)
text('.dep-with-asset-ext-no-dual-package', original === reexport)
+
+
diff --git a/playground/optimize-deps/package.json b/playground/optimize-deps/package.json
index a1e4c17a16f027..35383a562db30b 100644
--- a/playground/optimize-deps/package.json
+++ b/playground/optimize-deps/package.json
@@ -29,6 +29,7 @@
"@vitejs/test-dep-optimize-exports-with-root-glob": "file:./dep-optimize-exports-with-root-glob",
"@vitejs/test-dep-optimize-with-glob": "file:./dep-optimize-with-glob",
"@vitejs/test-dep-relative-to-main": "file:./dep-relative-to-main",
+ "@vitejs/test-dep-source-map-no-sources": "file:./dep-source-map-no-sources",
"@vitejs/test-dep-with-asset-ext1.pdf": "file:./dep-with-asset-ext/dep1",
"@vitejs/test-dep-with-asset-ext2.pdf": "file:./dep-with-asset-ext/dep2",
"@vitejs/test-dep-with-builtin-module-cjs": "file:./dep-with-builtin-module-cjs",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 71dd2452846c51..b66c87dc9c34d0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -960,6 +960,9 @@ importers:
'@vitejs/test-dep-relative-to-main':
specifier: file:./dep-relative-to-main
version: file:playground/optimize-deps/dep-relative-to-main
+ '@vitejs/test-dep-source-map-no-sources':
+ specifier: file:./dep-source-map-no-sources
+ version: file:playground/optimize-deps/dep-source-map-no-sources
'@vitejs/test-dep-with-asset-ext1.pdf':
specifier: file:./dep-with-asset-ext/dep1
version: file:playground/optimize-deps/dep-with-asset-ext/dep1
@@ -1085,6 +1088,8 @@ importers:
playground/optimize-deps/dep-relative-to-main: {}
+ playground/optimize-deps/dep-source-map-no-sources: {}
+
playground/optimize-deps/dep-with-asset-ext/dep1: {}
playground/optimize-deps/dep-with-asset-ext/dep2:
@@ -3293,6 +3298,9 @@ packages:
'@vitejs/test-dep-self-reference-url-worker@file:playground/worker/dep-self-reference-url-worker':
resolution: {directory: playground/worker/dep-self-reference-url-worker, type: directory}
+ '@vitejs/test-dep-source-map-no-sources@file:playground/optimize-deps/dep-source-map-no-sources':
+ resolution: {directory: playground/optimize-deps/dep-source-map-no-sources, type: directory}
+
'@vitejs/test-dep-that-imports@file:playground/external/dep-that-imports':
resolution: {directory: playground/external/dep-that-imports, type: directory}
@@ -8851,6 +8859,8 @@ snapshots:
'@vitejs/test-dep-self-reference-url-worker@file:playground/worker/dep-self-reference-url-worker': {}
+ '@vitejs/test-dep-source-map-no-sources@file:playground/optimize-deps/dep-source-map-no-sources': {}
+
'@vitejs/test-dep-that-imports@file:playground/external/dep-that-imports(typescript@5.6.3)':
dependencies:
slash3: slash@3.0.0