@unizap/unicss
Version:
Unicss: Build sleek interfaces straight from your markup. Fast, modern, utility-first CSS framework for rapid UI development.
56 lines (50 loc) • 1.52 kB
JavaScript
const path = require("path");
const fs = require("fs");
const generateCSS = require("../dist/index.js");
const args = process.argv.slice(2);
let outFile = "style/unicss.css";
let watch = false;
let skipBase = false;
let content = null;
for (let i = 0; i < args.length; i++) {
if ((args[i] === "-o" || args[i] === "--output") && args[i + 1]) {
outFile = args[i + 1];
i++;
}
if (args[i] === "-w" || args[i] === "--watch") {
watch = true;
}
if (args[i] === "--skip-base") {
skipBase = true;
}
if ((args[i] === "-c" || args[i] === "--content") && args[i + 1]) {
// Support multiple patterns separated by comma or multiple --content flags
const patterns = args[i + 1].split(",").map(p => p.trim());
content = content ? [...content, ...patterns] : patterns;
i++;
}
}
function run() {
const css = generateCSS({ skipBase, content });
const outDir = path.dirname(outFile);
if (!fs.existsSync(outDir)) {
fs.mkdirSync(outDir, { recursive: true });
}
fs.writeFileSync(outFile, css);
console.log(`Unicss generated at ${outFile}`);
}
run();
if (watch) {
const chokidar = require("chokidar");
// Watch content patterns or default patterns, plus the config
const watchPatterns = content || ["**/*.{js,jsx,ts,tsx,html,vue}"];
const watcher = chokidar.watch([
...watchPatterns,
"unicss.config.js"
], { ignoreInitial: true });
watcher.on("all", () => {
console.log("Change detected. Regenerating Unicss...");
run();
});
}