UNPKG

st-bundle

Version:

CLI for watching and bundling SpringType projects.

92 lines (91 loc) 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const postcss = require("postcss"); const cssDevModuleRender_1 = require("../../stylesheet/cssDevModuleRender"); const pluginStrings_1 = require("../pluginStrings"); function setEmpty() { } exports.setEmpty = setEmpty; async function createCSSModule(props) { let targetJSON; return new Promise((resolve, reject) => { postcss([ require('postcss-modules')({ getJSON: function (cssFileName, json, outputFileName) { targetJSON = json; }, }), ]) .process(props.css, { from: props.module.props.absPath, to: props.module.props.absPath, map: props.module.isCSSSourceMapRequired() && { inline: false }, }) .then(result => { return resolve({ json: targetJSON, css: result.css, map: result.map }); }); }); } function cssContextHandler(props) { const { ctx, processor, shared } = props; const supported = props.ctx.config.supportsStylesheet() || shared.asText; if (!supported) { props.module.contents = 'module.exports = {}'; return; } if (shared.asModule) { if (!ctx.isInstalled('postcss-modules')) { ctx.fatal(`Fatal error when capturing ${props.module.props.absPath}`, [ 'Module "postcss-modules" is required, Please install it using the following command', 'npm install postcss-modules --save-dev', ]); return; } } ctx.ict.promise(async () => { try { // reset errored status props.module.errored = false; const data = await processor.render(); const rendererProps = { data, ctx, options: props.options, module: props.module, useDefault: props.shared.useDefault, }; if (shared.asModule) { const result = await createCSSModule({ css: data.css, module: props.module, shared: props.shared }); data.json = result.json; data.map = undefined; data.css = result.css; props.module.isCSSModule = true; } else if (shared.asText) { props.module.isCSSText = true; props.module.notStylesheet(); props.module.contents = pluginStrings_1.wrapContents(JSON.stringify(data.css), props.shared.useDefault); return; } if (ctx.config.production) { props.module.css = data; if (shared.asModule && data.json) { props.module.contents = pluginStrings_1.wrapContents(JSON.stringify(data.json), props.shared.useDefault); } } else { cssDevModuleRender_1.cssDevModuleRender(Object.assign({}, rendererProps)); } } catch (e) { // prevent module from being cached props.module.errored = true; let errMessage = e.message ? e.message : `Uknown error in file ${props.module.props.absPath}`; props.module.contents = `console.error(${JSON.stringify(errMessage)})`; ctx.log.error('$error in $file', { error: e.message, file: props.module.props.absPath, }); } }); } exports.cssContextHandler = cssContextHandler;