diff options
Diffstat (limited to 'node_modules/sass-loader/lib/proxyCustomImporters.js')
-rw-r--r-- | node_modules/sass-loader/lib/proxyCustomImporters.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/sass-loader/lib/proxyCustomImporters.js b/node_modules/sass-loader/lib/proxyCustomImporters.js new file mode 100644 index 0000000..b15a917 --- /dev/null +++ b/node_modules/sass-loader/lib/proxyCustomImporters.js @@ -0,0 +1,29 @@ +"use strict"; + +/** + * Creates new custom importers that use the given `resourcePath` if libsass calls the custom importer with `prev` + * being 'stdin'. + * + * Why do we need this? We have to use the `data` option of node-sass in order to compile our sass because + * the `resourcePath` might not be an actual file on disk. When using the `data` option, libsass uses the string + * 'stdin' instead of a filename. + * + * We have to fix this behavior in order to provide a consistent experience to the webpack user. + * + * @param {function|Array<function>} importer + * @param {string} resourcePath + * @returns {Array<function>} + */ +function proxyCustomImporters(importer, resourcePath) { + return [].concat(importer).map((importer) => { + return function (url, prev, done) { + return importer.apply( + this, // eslint-disable-line no-invalid-this + Array.from(arguments) + .map((arg, i) => i === 1 && arg === "stdin" ? resourcePath : arg) + ); + }; + }); +} + +module.exports = proxyCustomImporters; |