UNPKG

rollup-plugin-scss-lit

Version:

Rollup plugin for importing Sass sources as constructable stylesheets to projects using lit (lit-html and lit-element) or fast-element.

67 lines (57 loc) 1.8 kB
'use strict'; var pluginutils = require('@rollup/pluginutils'); var node_path = require('node:path'); var node_url = require('node:url'); var sass = require('sass'); var rollupCopyTransformCss = require('rollup-copy-transform-css'); function escapeTaggedTemplate(source) { return source .replaceAll('\\', '\\\\') .replaceAll('`', '\\`') .replaceAll('$', '\\$') } function cssToModule(css, tag, specifier) { return `import { ${tag} } from '${specifier}'; export default ${tag}\`${escapeTaggedTemplate(css)}\`;` } function handleError({ message, reason, column, line }) { /* c8 ignore next 2 */ if (reason) { this.error(reason,{ column, line }); } else { this.error(message); } } function litScss({ include = ['**/*.scss'], exclude, minify, options, plugins, tag = 'css', specifier = 'lit' } = {}) { const filter = pluginutils.createFilter(include, exclude); const processor = (minify || plugins) && rollupCopyTransformCss.createProcessor({ minify, plugins }); return { name: 'lit-scss', load(id) { if (filter(id)) { this.addWatchFile(node_path.resolve(id)); } }, async transform(source, id) { // eslint-disable-line consistent-return if (filter(id)) { try { let { css, loadedUrls } = sass.compileString(source, options); for (const url of loadedUrls) { this.addWatchFile(node_url.fileURLToPath(url)); } if (processor) { ({ css } = await processor.process(css, { from: id, map: false })); } return { code: cssToModule(css, tag, specifier), map: { mappings: '' } } } catch (err) { handleError.call(this, err); } } } } } exports.litScss = litScss; //# sourceMappingURL=index.cjs.map