Closed
Description
I have a function that dynamically sets whether sourceMaps should be included (amongst other options):
getExtractCSSLoaders(extractCSS, sourceMap = false) {
return (function* loadCss() {
for (const loader of css.loaders) {
// Iterate over CSS/SASS/LESS and yield local and global mod configs
for (const mod of css.getModuleRegExp(loader.ext)) {
yield {
test: new RegExp(mod[0]),
loader: extractCSS.extract({
use: [
{
loader: 'css-loader',
query: Object.assign({}, css.loaderDefaults, {
sourceMap,
}, mod[1]),
},
// 'postcss-loader',
{
loader: 'postcss-loader',
options: {
sourceMap: false,
},
},
...loader.use,
],
fallback: 'style-loader',
}),
};
}
}
}());
},
Explicitly setting sourceMap: false
seems to kill/bypass postcss:
// Explicitly setting `sourceMap` to the default `false` kills it...
{
loader: 'postcss-loader',
options: {
sourceMap: false,
},
},
Setting it to true works fine:
{
loader: 'postcss-loader',
options: {
sourceMap: false,
},
},
And ignoring the option is also fine:
{
loader: 'postcss-loader',
},
A temporary workaround is to do a slightly uglier:
{
// ...
sourceMap ? {
loader: 'postcss-loader',
options: {
sourceMap: true,
},
} : 'postcss-loader',
// ...
}