diff --git a/integrations/vite/vue.test.ts b/integrations/vite/vue.test.ts
index 3fea0db9a..6bcd3f799 100644
--- a/integrations/vite/vue.test.ts
+++ b/integrations/vite/vue.test.ts
@@ -1,5 +1,5 @@
import { stripVTControlCharacters } from 'node:util'
-import { candidate, html, json, test, ts } from '../utils'
+import { candidate, css, html, json, test, ts } from '../utils'
test(
'production build',
@@ -73,6 +73,110 @@ test(
},
)
+{
+ const VUE_COMPONENT_COUNT = 1_000
+
+ let vueComponentsWithReferences = Object.fromEntries(
+ Array.from({ length: VUE_COMPONENT_COUNT }, (_, idx) => [
+ `src/components/Component${idx}.vue`,
+ html`
+
+ Component ${idx}
+
+
+
+ `,
+ ]),
+ )
+
+ let vueComponentImports = Array.from(
+ { length: VUE_COMPONENT_COUNT },
+ (_, idx) => `import Component${idx} from './components/Component${idx}.vue'`,
+ ).join('\n')
+
+ let vueComponentUsages = Array.from(
+ { length: VUE_COMPONENT_COUNT },
+ (_, idx) => ``,
+ ).join('\n')
+
+ test(
+ 'production build with many Vue style blocks referencing the main stylesheet',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "type": "module",
+ "dependencies": {
+ "vue": "^3.4.37",
+ "tailwindcss": "workspace:^"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.2",
+ "@tailwindcss/vite": "workspace:^",
+ "vite": "^7"
+ }
+ }
+ `,
+ 'vite.config.ts': ts`
+ import { defineConfig } from 'vite'
+ import vue from '@vitejs/plugin-vue'
+ import tailwindcss from '@tailwindcss/vite'
+
+ export default defineConfig({
+ plugins: [vue(), tailwindcss()],
+ })
+ `,
+ 'index.html': html`
+
+
+
+
+
+
+
+ `,
+ 'src/main.css': css`@import 'tailwindcss';`,
+ 'src/main.ts': ts`
+ import { createApp } from 'vue'
+ import './main.css'
+ import App from './App.vue'
+
+ createApp(App).mount('#app')
+ `,
+ 'src/App.vue': html`
+
+
+ ${vueComponentUsages}
+ `,
+ ...vueComponentsWithReferences,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm vite build')
+
+ let files = await fs.glob('dist/**/*.css')
+ expect(files).toHaveLength(1)
+
+ await fs.expectFileToContain(files[0][0], [
+ candidate`content-['component-0']`,
+ candidate`component-0`,
+ candidate`content-['component-99']`,
+ candidate`component-99`,
+ candidate`content-['component-999']`,
+ candidate`component-999`,
+ ])
+ },
+ )
+}
+
test(
'error when using `@apply` without `@reference`',
{
@@ -132,7 +236,7 @@ test(
expect.assertions(1)
try {
- await exec('pnpm vite build')
+ await exec('pnpm vite build', {}, { ignoreStdErr: true })
} catch (error) {
let [, message] =
/error during build:([\s\S]*?)file:/g.exec(