Skip to content

Commit

Permalink
limit the size of processed string literals
Browse files Browse the repository at this point in the history
  • Loading branch information
AdrianGonz97 committed Aug 15, 2023
1 parent ca1142e commit 47b85eb
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
5 changes: 5 additions & 0 deletions .changeset/strange-deers-serve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'vite-plugin-tailwind-purgecss': patch
---

fix: Reduced processing time by only extracting selectors from string literals of a certain max length
17 changes: 12 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,22 @@ export function purgeCss(purgeOptions?: PurgeOptions): Plugin {
walk(ast, {
enter(node, parent, key, index) {
if (node.type === 'Literal' && typeof node.value === 'string') {
extractor(node.value).forEach((selector) => selectors.add(selector));
node.value.split(/\s+/).forEach((word) => {
if (word.length < 250) {
extractor(word).forEach((selector) => selectors.add(selector));
} else selectors.add(word);
});
}
if (node.type === 'Identifier') {
extractor(node.name).forEach((selector) => selectors.add(selector));
selectors.add(node.name);
}
if (node.type === 'TemplateElement') {
extractor(node.value.cooked ?? node.value.raw).forEach((selector) =>
selectors.add(selector)
);
const value = node.value.cooked ?? node.value.raw;
value.split(/\s+/).forEach((word) => {
if (word.length < 250) {
extractor(word).forEach((selector) => selectors.add(selector));
} else selectors.add(word);
});
}
},
});
Expand Down

0 comments on commit 47b85eb

Please sign in to comment.