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));