File tree Expand file tree Collapse file tree 5 files changed +25
-11
lines changed
packages/vite/src/node/plugins Expand file tree Collapse file tree 5 files changed +25
-11
lines changed Original file line number Diff line number Diff line change 11import path from 'node:path'
22import MagicString from 'magic-string'
33import type { OutputChunk , RollupError } from 'rollup'
4+ import colors from 'picocolors'
45import type { ResolvedConfig } from '../config'
56import type { Plugin } from '../plugin'
67import { ENV_ENTRY , ENV_PUBLIC_PATH } from '../constants'
@@ -56,6 +57,17 @@ function saveEmitWorkerAsset(
5657 asset : WorkerBundleAsset ,
5758) : void {
5859 const workerMap = workerCache . get ( config . mainConfig || config ) !
60+ const duplicateAsset = workerMap . assets . get ( asset . fileName )
61+ if ( duplicateAsset ) {
62+ if ( ! isSameContent ( duplicateAsset . source , asset . source ) ) {
63+ config . logger . warn (
64+ `\n` +
65+ colors . yellow (
66+ `The emitted file ${ JSON . stringify ( asset . fileName ) } overwrites a previously emitted file of the same name.` ,
67+ ) ,
68+ )
69+ }
70+ }
5971 workerMap . assets . set ( asset . fileName , asset )
6072}
6173
Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ test('normal', async () => {
1212 )
1313 await untilUpdated (
1414 ( ) => page . textContent ( '.asset-url' ) ,
15- isBuild ? '/es /assets/worker_asset-vite.svg' : '/es/vite.svg' ,
15+ isBuild ? / \/ e s \ /a s s e t s \ /w o r k e r _ a s s e t - v i t e - [ \w - ] { 8 } \ .s v g / : '/es/vite.svg' ,
1616 )
1717 await untilUpdated ( ( ) => page . textContent ( '.dep-cjs' ) , '[cjs ok]' )
1818} )
@@ -94,7 +94,7 @@ describe.runIf(isBuild)('build', () => {
9494 test ( 'inlined code generation' , async ( ) => {
9595 const assetsDir = path . resolve ( testDir , 'dist/es/assets' )
9696 const files = fs . readdirSync ( assetsDir )
97- expect ( files . length ) . toBe ( 35 )
97+ expect ( files . length ) . toBe ( 36 )
9898 const index = files . find ( ( f ) => f . includes ( 'main-module' ) )
9999 const content = fs . readFileSync ( path . resolve ( assetsDir , index ) , 'utf-8' )
100100 const worker = files . find ( ( f ) => f . includes ( 'my-worker' ) )
Original file line number Diff line number Diff line change @@ -21,7 +21,9 @@ test('normal', async () => {
2121 )
2222 await untilUpdated (
2323 ( ) => page . textContent ( '.asset-url' ) ,
24- isBuild ? '/iife/assets/worker_asset-vite.svg' : '/iife/vite.svg' ,
24+ isBuild
25+ ? / \/ i i f e \/ a s s e t s \/ w o r k e r _ a s s e t - v i t e - [ \w - ] { 8 } \. s v g /
26+ : '/iife/vite.svg' ,
2527 )
2628} )
2729
Original file line number Diff line number Diff line change @@ -13,8 +13,8 @@ export default defineConfig({
1313 plugins : ( ) => [ workerPluginTestPlugin ( ) ] ,
1414 rollupOptions : {
1515 output : {
16- assetFileNames : 'assets/worker_asset-[name].[ext]' ,
17- chunkFileNames : 'assets/worker_chunk-[name].js' ,
16+ assetFileNames : 'assets/worker_asset-[name]-[hash] .[ext]' ,
17+ chunkFileNames : 'assets/worker_chunk-[name]-[hash] .js' ,
1818 entryFileNames : 'assets/worker_entry-[name].js' ,
1919 } ,
2020 } ,
@@ -25,8 +25,8 @@ export default defineConfig({
2525 filePath . endsWith ( '.svg' ) ? false : undefined ,
2626 rollupOptions : {
2727 output : {
28- assetFileNames : 'assets/[name].[ext]' ,
29- chunkFileNames : 'assets/[name].js' ,
28+ assetFileNames : 'assets/[name]-[hash] .[ext]' ,
29+ chunkFileNames : 'assets/[name]-[hash] .js' ,
3030 entryFileNames : 'assets/[name].js' ,
3131 } ,
3232 } ,
Original file line number Diff line number Diff line change @@ -13,8 +13,8 @@ export default defineConfig({
1313 plugins : ( ) => [ workerPluginTestPlugin ( ) ] ,
1414 rollupOptions : {
1515 output : {
16- assetFileNames : 'assets/worker_asset-[name].[ext]' ,
17- chunkFileNames : 'assets/worker_chunk-[name].js' ,
16+ assetFileNames : 'assets/worker_asset-[name]-[hash] .[ext]' ,
17+ chunkFileNames : 'assets/worker_chunk-[name]-[hash] .js' ,
1818 // should be overwritten to worker_entry-[name] by the config-test plugin
1919 entryFileNames : 'assets/worker_-[name].js' ,
2020 } ,
@@ -27,8 +27,8 @@ export default defineConfig({
2727 manifest : true ,
2828 rollupOptions : {
2929 output : {
30- assetFileNames : 'assets/[name].[ext]' ,
31- chunkFileNames : 'assets/[name].js' ,
30+ assetFileNames : 'assets/[name]-[hash] .[ext]' ,
31+ chunkFileNames : 'assets/[name]-[hash] .js' ,
3232 entryFileNames : 'assets/[name].js' ,
3333 } ,
3434 } ,
You can’t perform that action at this time.
0 commit comments