Files
30-seconds-of-code/node_modules/gatsby-plugin-sass/gatsby-node.js
2019-08-20 15:52:05 +02:00

84 lines
2.3 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _resolve = _interopRequireDefault(require("./resolve"));
exports.onCreateWebpackConfig = ({
actions,
stage,
rules,
plugins,
loaders
}, _ref) => {
let {
cssLoaderOptions = {},
postCssPlugins,
useResolveUrlLoader,
sassRuleTest,
sassRuleModulesTest
} = _ref,
sassOptions = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["cssLoaderOptions", "postCssPlugins", "useResolveUrlLoader", "sassRuleTest", "sassRuleModulesTest"]);
const {
setWebpackConfig
} = actions;
const PRODUCTION = stage !== `develop`;
const isSSR = stage.includes(`html`);
const sassLoader = {
loader: (0, _resolve.default)(`sass-loader`),
options: Object.assign({
sourceMap: useResolveUrlLoader ? true : !PRODUCTION
}, sassOptions)
};
const sassRule = {
test: sassRuleTest || /\.s(a|c)ss$/,
use: isSSR ? [loaders.null()] : [loaders.miniCssExtract(), loaders.css(Object.assign({}, cssLoaderOptions, {
importLoaders: 2
})), loaders.postcss({
plugins: postCssPlugins
}), sassLoader]
};
const sassRuleModules = {
test: sassRuleModulesTest || /\.module\.s(a|c)ss$/,
use: [!isSSR && loaders.miniCssExtract({
hmr: false
}), loaders.css(Object.assign({}, cssLoaderOptions, {
modules: true,
importLoaders: 2
})), loaders.postcss({
plugins: postCssPlugins
}), sassLoader].filter(Boolean)
};
if (useResolveUrlLoader && !isSSR) {
sassRule.use.splice(-1, 0, {
loader: `resolve-url-loader`,
options: useResolveUrlLoader.options ? useResolveUrlLoader.options : {}
});
sassRuleModules.use.splice(-1, 0, {
loader: `resolve-url-loader`,
options: useResolveUrlLoader.options ? useResolveUrlLoader.options : {}
});
}
let configRules = [];
switch (stage) {
case `develop`:
case `build-javascript`:
case `build-html`:
case `develop-html`:
configRules = configRules.concat([{
oneOf: [sassRuleModules, sassRule]
}]);
break;
}
setWebpackConfig({
module: {
rules: configRules
}
});
};