diff options
author | 2020-11-16 00:10:28 +0100 | |
---|---|---|
committer | 2020-11-16 00:10:28 +0100 | |
commit | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch) | |
tree | 55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/sass-loader/lib/normalizeOptions.js | |
download | website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2 website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip |
api, login, auth
Diffstat (limited to 'node_modules/sass-loader/lib/normalizeOptions.js')
-rw-r--r-- | node_modules/sass-loader/lib/normalizeOptions.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/sass-loader/lib/normalizeOptions.js b/node_modules/sass-loader/lib/normalizeOptions.js new file mode 100644 index 0000000..ad1ca1e --- /dev/null +++ b/node_modules/sass-loader/lib/normalizeOptions.js @@ -0,0 +1,78 @@ +"use strict"; + +const os = require("os"); +const utils = require("loader-utils"); +const cloneDeep = require("clone-deep"); +const path = require("path"); +const proxyCustomImporters = require("./proxyCustomImporters"); + +/** + * Derives the sass options from the loader context and normalizes its values with sane defaults. + * + * Please note: If loaderContext.query is an options object, it will be re-used across multiple invocations. + * That's why we must not modify the object directly. + * + * @param {LoaderContext} loaderContext + * @param {string} content + * @param {Function} webpackImporter + * @returns {Object} + */ +function normalizeOptions(loaderContext, content, webpackImporter) { + const options = cloneDeep(utils.getOptions(loaderContext)) || {}; + const resourcePath = loaderContext.resourcePath; + + options.data = options.data ? (options.data + os.EOL + content) : content; + + // opt.outputStyle + if (!options.outputStyle && loaderContext.minimize) { + options.outputStyle = "compressed"; + } + + // opt.sourceMap + // Not using the `this.sourceMap` flag because css source maps are different + // @see https://github.com/webpack/css-loader/pull/40 + if (options.sourceMap) { + // Deliberately overriding the sourceMap option here. + // node-sass won't produce source maps if the data option is used and options.sourceMap is not a string. + // In case it is a string, options.sourceMap should be a path where the source map is written. + // But since we're using the data option, the source map will not actually be written, but + // all paths in sourceMap.sources will be relative to that path. + // Pretty complicated... :( + options.sourceMap = path.join(process.cwd(), "/sass.map"); + if ("sourceMapRoot" in options === false) { + options.sourceMapRoot = process.cwd(); + } + if ("omitSourceMapUrl" in options === false) { + // The source map url doesn't make sense because we don't know the output path + // The css-loader will handle that for us + options.omitSourceMapUrl = true; + } + if ("sourceMapContents" in options === false) { + // If sourceMapContents option is not set, set it to true otherwise maps will be empty/null + // when exported by webpack-extract-text-plugin. + options.sourceMapContents = true; + } + } + + // indentedSyntax is a boolean flag. + const ext = path.extname(resourcePath); + + // If we are compiling sass and indentedSyntax isn't set, automatically set it. + if (ext && ext.toLowerCase() === ".sass" && "indentedSyntax" in options === false) { + options.indentedSyntax = true; + } else { + options.indentedSyntax = Boolean(options.indentedSyntax); + } + + // Allow passing custom importers to `node-sass`. Accepts `Function` or an array of `Function`s. + options.importer = options.importer ? proxyCustomImporters(options.importer, resourcePath) : []; + options.importer.push(webpackImporter); + + // `node-sass` uses `includePaths` to resolve `@import` paths. Append the currently processed file. + options.includePaths = options.includePaths || []; + options.includePaths.push(path.dirname(resourcePath)); + + return options; +} + +module.exports = normalizeOptions; |