diff --git a/packages/svelte/package.json b/packages/svelte/package.json index c3ca9389a..acc15df27 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -35,6 +35,7 @@ }, "dependencies": { "@modular-css/processor": "file:../processor", + "@rollup/pluginutils": "^4.1.2", "escape-string-regexp": "^4.0.0", "is-url": "^1.2.4", "slash": "^3.0.0" diff --git a/packages/svelte/svelte.js b/packages/svelte/svelte.js index 2d2cb2e36..64d40b34a 100644 --- a/packages/svelte/svelte.js +++ b/packages/svelte/svelte.js @@ -5,6 +5,7 @@ const path = require("path"); const isUrl = require("is-url"); const escape = require("escape-string-regexp"); const slash = require("slash"); +const utils = require("@rollup/pluginutils"); const Processor = require("@modular-css/processor"); @@ -17,20 +18,36 @@ const linkRegex = /]*?\bhref=\s*(?:"([^"]+)"|'([^']+)'|([^>\s]+))[^>] const prefix = `[${require("./package.json").name}]`; -module.exports = (config = false) => { +const CONFIG_DEFAULTS = { + verbose : false, + values : false, + + // Regexp to work around https://github.com/rollup/rollup-pluginutils/issues/39 + include : /\.css$/i, +}; + +module.exports = (opts = {}) => { + const options = { + __proto__ : null, + ...CONFIG_DEFAULTS, + ...opts, + }; + // Use a passed processor, or set up our own if necessary - const { processor = new Processor(config) } = config; + const { processor = new Processor(options) } = options; const { cwd } = processor.options; // eslint-disable-next-line no-console, no-empty-function - const log = config.verbose ? console.log.bind(console, prefix) : () => {}; + const log = options.verbose ? console.log.bind(console, prefix) : () => {}; // eslint-disable-next-line no-console const warn = console.warn.bind(console, prefix, "WARN"); const relative = (file) => slash(path.relative(cwd, file)); + const filter = utils.createFilter(options.include, options.exclude); + // Check for and stringify any values in the template we couldn't convert const missing = ({ source, file }) => { missedRegex.lastIndex = 0; @@ -130,7 +147,7 @@ module.exports = (config = false) => { return out; } - if(!href.endsWith(".css")) { + if(!filter(href)) { // eslint-disable-next-line no-console console.warn(`Possible invalid href: ${href}`); } @@ -235,7 +252,7 @@ module.exports = (config = false) => { }); } - if(config.values && valueKeys.length) { + if(options.values && valueKeys.length) { log("updating source {cssvalue.} references from", css); log(JSON.stringify(valueKeys));