diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts index 218a14bc..2246584b 100644 --- a/packages/cli/src/build.ts +++ b/packages/cli/src/build.ts @@ -620,10 +620,14 @@ export async function runBuild(appRoot: string): Promise { appDir, appRoot: root, mode: "production", - sources: [ - ...componentDirs, - ...pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), - ], + // Component discovery is not style discovery. Built-in and plugin + // components own their CSS; scanning every available component makes + // Tailwind/Iconify generate rules for packages and components the app + // never renders. Packages that intentionally use app utilities opt in + // through an explicit styles.source contribution. + sources: pluginContributions.styles.flatMap((style) => + style.source ? [style.source] : [], + ), entries: pluginContributions.styles.flatMap((style) => (style.entry ? [style.entry] : [])), }, config.styles, diff --git a/packages/dev-server/src/index.ts b/packages/dev-server/src/index.ts index dc8ef39c..2a06ee6b 100644 --- a/packages/dev-server/src/index.ts +++ b/packages/dev-server/src/index.ts @@ -440,10 +440,9 @@ export async function startServer(opts: ServeOptions): Promise { config: opts.stylesConfig, appRoot, publicDir: join(appRoot, "public"), - sources: [ - ...componentDirs, - ...pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), - ], + // Component discovery is separate from utility-source discovery. + // Packages that need Tailwind scanning opt in via styles.source. + sources: pluginContributions.styles.flatMap((style) => (style.source ? [style.source] : [])), entries: pluginContributions.styles.flatMap((style) => (style.entry ? [style.entry] : [])), }, theme,