Ctrl K
ComunidadGuías…

generateBlocklist.mjs

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import fs from 'fs';
import postcss from 'postcss';
import selectorParser from 'postcss-selector-parser';

const pjson = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));
const css = fs.readFileSync(`./public/dist/css/app.${pjson.version}.min.css`, 'utf-8');
const classNames = new Set();

const addClassIfMatches = (classNode) => {
    if (classNode.value.startsWith('tw-')) {
        classNames.add(classNode.value);
    }
};

const processSelectors = (rule) => {
    selectorParser(selectors => {
        selectors.walkClasses(addClassIfMatches);
    }).processSync(rule);
};

const extractClassesPlugin = postcss.plugin('extract-classes', () => {
    return (root) => {
        root.walkRules(processSelectors);
    };
});

await postcss([extractClassesPlugin]).process(css, { from: undefined });
const blocklist = Array.from(classNames);
fs.writeFileSync('./blocklist.json', JSON.stringify(blocklist, null, 2));