UNPKG

@minna-ui/rollup-plugin-postcss

Version:

PostCSS runner rollup plugin for use in Minna UI projects.

63 lines 2.56 kB
"use strict"; /* eslint-disable no-restricted-syntax */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const deepmerge_1 = __importDefault(require("deepmerge")); const postcss_1 = __importDefault(require("postcss")); const postcss_load_config_1 = __importDefault(require("postcss-load-config")); // @ts-ignore const postcss_scss_1 = __importDefault(require("postcss-scss")); const rollup_pluginutils_1 = require("rollup-pluginutils"); /** * Rollup plugin to process imported styles via PostCSS. */ function postcssRollup({ exclude = [/node_modules\/@minna-ui/], include = [/\.(p|post)?css$/], ...options } = {}) { const filter = rollup_pluginutils_1.createFilter(include, exclude); return { name: 'postcss', async transform(code, id) { if (!filter(id)) return; try { const context = deepmerge_1.default({ from: id, map: { annotation: false, inline: false, }, syntax: postcss_scss_1.default, to: id, }, options); const { plugins, options: opts } = await postcss_load_config_1.default(context); const result = await postcss_1.default(plugins).process(code, opts); for (const warn of result.warnings()) { this.warn(warn.toString(), { column: warn.column, line: warn.line }); } // register file dependencies so rollup can watch them for changes for (const msg of result.messages) { if (msg.type === 'dependency') { this.addWatchFile(msg.file); } } // eslint-disable-next-line consistent-return return { code: result.css, map: (result.map && result.map.toString()) || undefined, }; } catch (err) { if (err.name === 'CssSyntaxError') { process.stderr.write(err.message + err.showSourceCode()); } else { this.error(err); } } }, }; } exports.postcss = postcssRollup; exports.default = postcssRollup; //# sourceMappingURL=plugin.js.map