From 4b50260f295a79ac499bdd343509fcdaf93d5508 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Tue, 1 Apr 2025 14:36:44 +0200 Subject: [PATCH 1/2] feat: add ignore option to tailwind plugin --- packages/@tailwindcss-vite/src/index.ts | 29 ++++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts index b47201b247a6..867c65ecd911 100644 --- a/packages/@tailwindcss-vite/src/index.ts +++ b/packages/@tailwindcss-vite/src/index.ts @@ -10,10 +10,14 @@ const SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/ const COMMON_JS_PROXY_RE = /\?commonjs-proxy/ const INLINE_STYLE_ID_RE = /[?&]index\=\d+\.css$/ -export default function tailwindcss(): Plugin[] { +export interface TailwindPluginOptions { + ignore?: (string | RegExp | ((id: string) => boolean))[] +} + +export default function tailwindcss(pluginOptions?: TailwindPluginOptions): Plugin[] { let servers: ViteDevServer[] = [] let config: ResolvedConfig | null = null - + let ignoredFiles = pluginOptions?.ignore??[]; let isSSR = false let minify = false @@ -61,7 +65,7 @@ export default function tailwindcss(): Plugin[] { enforce: 'pre', async transform(src, id, options) { - if (!isPotentialCssRootFile(id)) return + if (!isPotentialCssRootFile(id, ignoredFiles)) return using I = new Instrumentation() DEBUG && I.start('[@tailwindcss/vite] Generate CSS (serve)') @@ -86,7 +90,7 @@ export default function tailwindcss(): Plugin[] { enforce: 'pre', async transform(src, id) { - if (!isPotentialCssRootFile(id)) return + if (!isPotentialCssRootFile(id, ignoredFiles)) return using I = new Instrumentation() DEBUG && I.start('[@tailwindcss/vite] Generate CSS (build)') @@ -115,10 +119,23 @@ function getExtension(id: string) { return path.extname(filename).slice(1) } -function isPotentialCssRootFile(id: string) { +function isPotentialCssRootFile(id: string, ignoredFiles: Exclude) { if (id.includes('/.vite/')) return + let isIgnoredPattern = ignoredFiles.some(matcher => { + if(matcher instanceof RegExp){ + return matcher.test(id); + } + if(matcher instanceof Function){ + return matcher(id); + } + + return matcher.includes(matcher) + }); + // User defined ignore pattern + if(isIgnoredPattern) return + let extension = getExtension(id) - let isCssFile = + const isCssFile = (extension === 'css' || id.includes('&lang.css') || id.match(INLINE_STYLE_ID_RE)) && // Don't intercept special static asset resources !SPECIAL_QUERY_RE.test(id) && From 9dd01aeff247d9aa4c7ce6f6deb24076c4397eab Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Tue, 1 Apr 2025 14:40:32 +0200 Subject: [PATCH 2/2] chore: reverted const to let --- packages/@tailwindcss-vite/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts index 867c65ecd911..cedcdb3d486b 100644 --- a/packages/@tailwindcss-vite/src/index.ts +++ b/packages/@tailwindcss-vite/src/index.ts @@ -135,7 +135,7 @@ function isPotentialCssRootFile(id: string, ignoredFiles: Exclude