diff --git a/integrations/vite/index.test.ts b/integrations/vite/index.test.ts
index 89814ccc6..c22f4cfb5 100644
--- a/integrations/vite/index.test.ts
+++ b/integrations/vite/index.test.ts
@@ -427,6 +427,92 @@ for (let transformer of ['postcss', 'lightningcss']) {
})
},
)
+
+ test(
+ `source(none) disables looking at the module graph`,
+ {
+ fs: {
+ 'package.json': json`{}`,
+ 'pnpm-workspace.yaml': yaml`
+ #
+ packages:
+ - project-a
+ `,
+ 'project-a/package.json': txt`
+ {
+ "type": "module",
+ "dependencies": {
+ "@tailwindcss/vite": "workspace:^",
+ "tailwindcss": "workspace:^"
+ },
+ "devDependencies": {
+ ${transformer === 'lightningcss' ? `"lightningcss": "^1.26.0",` : ''}
+ "vite": "^5.3.5"
+ }
+ }
+ `,
+ 'project-a/vite.config.ts': ts`
+ import tailwindcss from '@tailwindcss/vite'
+ import { defineConfig } from 'vite'
+
+ export default defineConfig({
+ css: ${transformer === 'postcss' ? '{}' : "{ transformer: 'lightningcss' }"},
+ build: { cssMinify: false },
+ plugins: [tailwindcss()],
+ })
+ `,
+ 'project-a/index.html': html`
+
+
+
+
+ Hello, world!
+
+ `,
+ 'project-a/src/index.css': css`
+ @import 'tailwindcss' source(none);
+ @source '../../project-b/src/**/*.html';
+ `,
+ 'project-b/src/index.html': html`
+
+ `,
+ 'project-b/src/index.js': js`
+ const className = "content-['project-b/src/index.js']"
+ module.exports = { className }
+ `,
+ },
+ },
+ async ({ root, fs, exec }) => {
+ console.log(await exec('pnpm vite build', { cwd: path.join(root, 'project-a') }))
+
+ let files = await fs.glob('project-a/dist/**/*.css')
+ expect(files).toHaveLength(1)
+ let [filename] = files[0]
+
+ // `underline` and `m-2` are only present from files in the module graph
+ // which we've explicitly disabled with source(none) so they should not
+ // be present
+ await fs.expectFileNotToContain(filename, [
+ //
+ candidate`underline`,
+ candidate`m-2`,
+ ])
+
+ // The files from `project-b` should be included because there is an
+ // explicit `@source` directive for it
+ await fs.expectFileToContain(filename, [
+ //
+ candidate`flex`,
+ ])
+
+ // The explicit source directive only covers HTML files, so the JS file
+ // should not be included
+ await fs.expectFileNotToContain(filename, [
+ //
+ candidate`content-['project-b/src/index.js']`,
+ ])
+ },
+ )
})
}