diff --git a/packages/vite/src/optimize-deps.ts b/packages/vite/src/optimize-deps.ts index d0ee47ff2..3263191cc 100644 --- a/packages/vite/src/optimize-deps.ts +++ b/packages/vite/src/optimize-deps.ts @@ -10,6 +10,10 @@ export function optimizeDeps(): OptimizeDeps { exclude: ['@embroider/macros'], extensions: ['.hbs', '.gjs', '.gts'], esbuildOptions: { + // When optimizing deps for development, + // always allow the latest featuers + // (such as top level await) + target: 'esnext', plugins: [esBuildResolver()], }, }; diff --git a/tests/scenarios/v2-addon-test.ts b/tests/scenarios/v2-addon-test.ts index 96f3887d4..9f7878450 100644 --- a/tests/scenarios/v2-addon-test.ts +++ b/tests/scenarios/v2-addon-test.ts @@ -153,6 +153,80 @@ appScenarios `, }, }, + // Default + different build.target + 'vite.config.mjs': ` + import { defineConfig } from "vite"; + import { + resolver, + hbs, + scripts, + templateTag, + optimizeDeps, + compatPrebuild, + assets, + contentFor, + } from "@embroider/vite"; + import { resolve } from "path"; + import { babel } from "@rollup/plugin-babel"; + + export default defineConfig(({ mode }) => { + return { + cacheDir: resolve("node_modules", ".vite"), + resolve: { + extensions: [ + ".mjs", + ".gjs", + ".js", + ".mts", + ".gts", + ".ts", + ".hbs", + ".hbs.js", + ".json", + ], + }, + plugins: [ + hbs(), + templateTag(), + scripts(), + resolver(), + compatPrebuild(), + assets(), + contentFor(), + + babel({ + babelHelpers: "runtime", + + // this needs .hbs because our hbs() plugin above converts them to + // javascript but the javascript still also needs babel, but we don't want + // to rename them because vite isn't great about knowing how to hot-reload + // them if we resolve them to made-up names. + extensions: [".gjs", ".js", ".hbs", ".ts", ".gts"], + }), + ], + optimizeDeps: optimizeDeps(), + server: { + port: 4200, + }, + build: { + outDir: "dist", + target: ['chrome130'], + rollupOptions: { + input: { + main: "index.html", + ...(shouldBuildTests(mode) + ? { tests: "tests/index.html" } + : undefined), + }, + }, + }, + }; + }); + + function shouldBuildTests(mode) { + return mode !== "production" || process.env.FORCE_BUILD_TESTS; + } + `, }); }) .forEachScenario(scenario => {