css-deadweigth
Version:
CLI tool to detect unused CSS in your project
27 lines (19 loc) • 716 B
JavaScript
import fs from 'fs/promises';
export async function extractUsedSelectors(sourceFilePaths) {
const usedSelectors = new Set();
const classRegex = /class(Name)?=["'`]([^"'`]+)["'`]/g;
const idRegex = /id=["'`]([^"'`]+)["'`]/g;
// Parallel read source files
const contents = await Promise.all(sourceFilePaths.map(file => fs.readFile(file, 'utf-8')));
for (const content of contents) {
let match;
while ((match = classRegex.exec(content)) !== null) {
const classes = match[2].split(/\s+/);
classes.forEach(cls => usedSelectors.add(`.${cls}`));
}
while ((match = idRegex.exec(content)) !== null) {
usedSelectors.add(`#${match[1]}`);
}
}
return usedSelectors;
}