diff --git a/packages/vite/src/resolver.ts b/packages/vite/src/resolver.ts index 002e9d593..a16a9159e 100644 --- a/packages/vite/src/resolver.ts +++ b/packages/vite/src/resolver.ts @@ -21,10 +21,16 @@ export function resolver(): Plugin { const virtualDeps: Map = new Map(); const notViteDeps = new Set(); + let mode = ''; + return { name: 'embroider-resolver', enforce: 'pre', + configResolved(config) { + mode = config.mode; + }, + configureServer(s) { server = s; server.watcher.on('all', (_eventName, path) => { @@ -94,12 +100,30 @@ export function resolver(): Plugin { }); this.emitFile({ type: 'asset', - fileName: '@embroider/virtual/test-support.js', + fileName: '@embroider/virtual/vendor.css', source: virtualContent( - resolve(resolverLoader.resolver.options.engines[0].root, '-embroider-test-support.js'), + resolve(resolverLoader.resolver.options.engines[0].root, '-embroider-vendor-styles.css'), resolverLoader.resolver ).src, }); + if (mode !== 'production') { + this.emitFile({ + type: 'asset', + fileName: '@embroider/virtual/test-support.js', + source: virtualContent( + resolve(resolverLoader.resolver.options.engines[0].root, '-embroider-test-support.js'), + resolverLoader.resolver + ).src, + }); + this.emitFile({ + type: 'asset', + fileName: '@embroider/virtual/test-support.css', + source: virtualContent( + resolve(resolverLoader.resolver.options.engines[0].root, '-embroider-test-support-styles.css'), + resolverLoader.resolver + ).src, + }); + } }, }; } diff --git a/tests/scenarios/compat-addon-classic-features-test.ts b/tests/scenarios/compat-addon-classic-features-test.ts index c00634731..c22f7b430 100644 --- a/tests/scenarios/compat-addon-classic-features-test.ts +++ b/tests/scenarios/compat-addon-classic-features-test.ts @@ -1,5 +1,5 @@ import { throwOnWarnings } from '@embroider/core'; -import { lstatSync, readFileSync } from 'fs'; +import { readFileSync, existsSync } from 'fs'; import { readFile } from 'fs/promises'; import { merge } from 'lodash'; import QUnit from 'qunit'; @@ -148,11 +148,19 @@ appScenarios }); test('virtual scripts are emitted in the build', async function (assert) { - let result = await app.execute('pnpm build'); + let result = await app.execute('pnpm build --mode=production'); + assert.equal(result.exitCode, 0, result.output); + + assert.true(existsSync(`${app.dir}/dist/@embroider/virtual/vendor.js`), 'vendor.js'); + assert.false(existsSync(`${app.dir}/dist/@embroider/virtual/test-support.js`), 'test-support.js'); + + result = await app.execute('pnpm build --mode=development'); assert.equal(result.exitCode, 0, result.output); - assert.true(lstatSync(`${app.dir}/dist/@embroider/virtual/vendor.js`).isFile()); - assert.true(lstatSync(`${app.dir}/dist/@embroider/virtual/test-support.js`).isFile()); + assert.true(existsSync(`${app.dir}/dist/@embroider/virtual/vendor.js`), 'vendor.js'); + assert.true(existsSync(`${app.dir}/dist/@embroider/virtual/test-support.js`), 'test-support.js'); + assert.true(existsSync(`${app.dir}/dist/@embroider/virtual/vendor.css`), 'vendor.css'); + assert.true(existsSync(`${app.dir}/dist/@embroider/virtual/test-support.css`), 'test-support.css'); }); test('virtual scripts contents are served in dev mode', async function (assert) {