@modular-css/postcss
Version:
Use modular-css via postcss
56 lines (39 loc) • 1.46 kB
JavaScript
const fs = require("fs");
const path = require("path");
const mkdirp = require("mkdirp");
const Processor = require("@modular-css/processor");
const { json : createJson } = require("@modular-css/processor/lib/output.js");
module.exports = (opts = {}) => ({
postcssPlugin : "modular-css-postcss",
Once : async (root, { result }) => {
const processor = new Processor({
__proto__ : null,
...opts,
...result.opts,
});
const { exports : exported } = await processor.string(result.opts.from, root);
const classes = exported;
const output = await processor.output();
const { json : writeJson } = processor.options;
result.messages.push({
type : "modular-css-exports",
exports : classes,
});
if(writeJson) {
let dest = writeJson;
if(typeof dest !== "string") {
const { opts: { to } } = result;
dest = `${path.join(path.dirname(to), path.basename(to, path.extname(to)))}.json`;
}
mkdirp.sync(path.dirname(dest));
const json = createJson(output.compositions);
fs.writeFileSync(
dest,
JSON.stringify(json, null, 4)
);
}
return output;
},
});
module.exports.postcss = true;
;