diff --git a/packages/vite/src/node/__tests__/build.spec.ts b/packages/vite/src/node/__tests__/build.spec.ts index f36811178cc238..0c2edac753fdff 100644 --- a/packages/vite/src/node/__tests__/build.spec.ts +++ b/packages/vite/src/node/__tests__/build.spec.ts @@ -865,6 +865,73 @@ test.for([true, false])( }, ) +test('sharedConfigBuild and emitAssets', async () => { + const root = resolve(__dirname, 'fixtures/shared-config-build/emitAssets') + const builder = await createBuilder({ + root, + logLevel: 'warn', + configFile: false, + environments: { + client: { + build: { + outDir: './dist/client', + emitAssets: true, + rollupOptions: { + input: '/entry.js', + }, + }, + }, + ssr: { + build: { + outDir: './dist/ssr', + emitAssets: true, + rollupOptions: { + input: '/entry.js', + }, + }, + }, + custom: { + build: { + outDir: './dist/custom', + emitAssets: true, + rollupOptions: { + input: '/entry.js', + }, + }, + }, + }, + builder: { + sharedConfigBuild: true, + }, + }) + + expect( + ['client', 'ssr', 'custom'].map( + (name) => builder.environments[name].config.build.emitAssets, + ), + ).toEqual([true, true, true]) + + await builder.buildApp() + + expect( + await Promise.all( + ['client', 'ssr', 'custom'].map((name) => + fsp.readdir( + resolve( + root, + builder.environments[name].config.build.outDir, + 'assets', + ), + ), + ), + ), + ).toEqual([ + expect.arrayContaining([expect.stringMatching(/\.css$/)]), + expect.arrayContaining([expect.stringMatching(/\.css$/)]), + expect.arrayContaining([expect.stringMatching(/\.css$/)]), + ]) +}) + test('adjust worker build error for worker.format', async () => { try { await build({ diff --git a/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/entry.js b/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/entry.js new file mode 100644 index 00000000000000..ff0325f1ba5e14 --- /dev/null +++ b/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/entry.js @@ -0,0 +1,2 @@ +import './test.css' +console.log('entry') diff --git a/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/test.css b/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/test.css new file mode 100644 index 00000000000000..7f69ee73360cb2 --- /dev/null +++ b/packages/vite/src/node/__tests__/fixtures/shared-config-build/emitAssets/test.css @@ -0,0 +1,3 @@ +body { + color: orange; +} diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 50caa48b3fae48..42e07c67ee9235 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -1658,7 +1658,7 @@ export async function resolveConfig( // For backward compat, set ssr environment build.emitAssets with the same value as build.ssrEmitAssets that might be changed in configResolved hook // https://github.com/vikejs/vike/blob/953614cea7b418fcc0309b5c918491889fdec90a/vike/node/plugin/plugins/buildConfig.ts#L67 - if (resolved.environments.ssr) { + if (!resolved.builder?.sharedConfigBuild && resolved.environments.ssr) { resolved.environments.ssr.build.emitAssets = resolved.build.ssrEmitAssets || resolved.build.emitAssets }