Skip to content

[2.0.5] Explicit false not working (options.sourceMap) #250

Closed
@leebenson

Description

@leebenson

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',
  // ...
}

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions