diff --git a/packages/nuxt/src/pages/macros.ts b/packages/nuxt/src/pages/macros.ts index 047ee23c3d..a15e9fea8a 100644 --- a/packages/nuxt/src/pages/macros.ts +++ b/packages/nuxt/src/pages/macros.ts @@ -43,9 +43,18 @@ export const TransformMacroPlugin = createUnplugin((options: TransformMacroPlugi return result() } + const imports = findStaticImports(code) + + // Purge all imports bringing side effects, such as CSS imports + for (const entry of imports) { + if (!entry.imports) { + s.remove(entry.start, entry.end) + } + } + // [webpack] Re-export any imports from script blocks in the components // with workaround for vue-loader bug: https://github.com/vuejs/vue-loader/pull/1911 - const scriptImport = findStaticImports(code).find(i => parseQuery(i.specifier.replace('?macro=true', '')).type === 'script') + const scriptImport = imports.find(i => parseQuery(i.specifier.replace('?macro=true', '')).type === 'script') if (scriptImport) { // https://github.com/vuejs/vue-loader/pull/1911 // https://github.com/vitejs/vite/issues/8473 diff --git a/test/basic.test.ts b/test/basic.test.ts index 5e98abf436..f2e86d8f4a 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -372,7 +372,7 @@ describe('dynamic paths', () => { const html = await $fetch('/assets') const urls = Array.from(html.matchAll(/(href|src)="(.*?)"/g)).map(m => m[2]) - const cssURL = urls.find(u => /_nuxt\/entry.*\.css$/.test(u)) + const cssURL = urls.find(u => /_nuxt\/assets.*\.css$/.test(u)) expect(cssURL).toBeDefined() const css = await $fetch(cssURL) const imageUrls = Array.from(css.matchAll(/url\(([^)]*)\)/g)).map(m => m[1].replace(/[-.][\w]{8}\./g, '.'))