@winstonblewup/sass-utils
Version:
My first mini scss utilitary framework
42 lines (35 loc) • 999 B
JavaScript
const fs = require('fs');
const path = require('path');
const { glob } = require('glob');
const contentPaths = [
'./src/**/*.vue',
'./src/**/*.js',
'./src/**/*.ts',
'./src/**/*.html'
];
const classRegex = /class=["'`]([^"'`]+)["'`]/g;
const validClassRegex = /^[a-zA-Z0-9_-]+$/;
const classes = new Set();
for (const contentPath of contentPaths) {
const files = glob.sync(contentPath);
for (const file of files) {
const content = fs.readFileSync(file, 'utf8');
let match;
while ((match = classRegex.exec(content))) {
match[1]
.split(/\s+/)
.filter(cls =>
cls &&
validClassRegex.test(cls) &&
!cls.includes('{') &&
!cls.includes('}')
)
.forEach(cls => classes.add(cls));
}
}
}
fs.writeFileSync(
path.resolve(__dirname, 'safelist.json'),
JSON.stringify([...classes], null, 2)
);
console.log(`Safelist generated with ${classes.size} classes`);