UNPKG

neuracss

Version:

50 lines (38 loc) 1.55 kB
const fs = require('fs'); const path = require('path'); const postcss = require('postcss'); const atImport = require('postcss-import'); const classes = require('./src/classes'); const htmlFolder = path.join(__dirname, 'templates'); const outputCss = path.join(__dirname, 'dist/styles.css'); const baseCssPath = path.join(__dirname, 'src/base.css'); async function buildCss() { const htmlFiles = fs.readdirSync(htmlFolder).filter(file => file.endsWith('.html')); let usedClasses = new Set(); htmlFiles.forEach(file => { const content = fs.readFileSync(path.join(htmlFolder, file), 'utf8'); const classMatches = [...content.matchAll(/class="([^"]+)"/g)]; classMatches.forEach(match => { const classList = match[1].split(/\s+/); classList.forEach(cls => usedClasses.add(cls)); }); }); let finalCss = ''; if (fs.existsSync(baseCssPath)) { const baseCssContent = fs.readFileSync(baseCssPath, 'utf8'); const processedBaseCss = await postcss([atImport()]).process(baseCssContent, { from: baseCssPath }); finalCss += processedBaseCss.css + '\n'; } usedClasses.forEach(cls => { if (classes[cls]) { finalCss += `.${cls} { ${classes[cls]} }\n`; console.log(`✅ Added .${cls}`); } else { console.warn(`⚠️ Warning: class .${cls} not found in src/classes.js`); } }); fs.mkdirSync(path.dirname(outputCss), { recursive: true }); fs.writeFileSync(outputCss, finalCss); console.log('🎉 Done! Generated dist/styles.css with used classes.'); } buildCss();