From 06d66b65b88ec50eac5127d2f50a043798b3cac6 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Fri, 16 Nov 2018 14:59:44 -0500 Subject: [PATCH] Conditionally add some logic to prevent accidental sourcemaps --- lib/plugins/optimize-css-assets.js | 16 +++++++++------- test/functional.js | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/plugins/optimize-css-assets.js b/lib/plugins/optimize-css-assets.js index 8c30adf8..daeda6d6 100644 --- a/lib/plugins/optimize-css-assets.js +++ b/lib/plugins/optimize-css-assets.js @@ -20,17 +20,19 @@ module.exports = function(webpackConfig) { const optimizePluginOptions = { // see: https://github.com/NMFR/optimize-css-assets-webpack-plugin/issues/53#issuecomment-400294569 // we always use annotations: true, which is the setting if you're - // outputting to a separate file because this plugin is only + // outputting to a separate file. This plugin is only // used in production, and, in production, we always use the // source-map option (a separate file) in config-generator. - cssProcessorOptions: { - map: { - inline: false, - annotation: true, - } - } + cssProcessorOptions: {} }; + if (webpackConfig.useSourceMaps) { + optimizePluginOptions.cssProcessorOptions.map = { + inline: false, + annotation: true, + }; + } + return new OptimizeCSSAssetsPlugin( applyOptionsCallback(webpackConfig.optimizeCssPluginOptionsCallback, optimizePluginOptions) ); diff --git a/test/functional.js b/test/functional.js index c7f0e6dc..0d6dfc7b 100644 --- a/test/functional.js +++ b/test/functional.js @@ -621,6 +621,29 @@ describe('Functional tests using webpack', function() { }); }); + it('Without enableSourceMaps(), there are no sourcemaps in production', (done) => { + const config = createWebpackConfig('www/build', 'production'); + config.setPublicPath('/build'); + config.addEntry('main', './js/no_require'); + config.addStyleEntry('bg', './css/background_image.scss'); + config.addStyleEntry('font', './css/roboto_font.css'); + config.enableSassLoader(); + + testSetup.runWebpack(config, (webpackAssert) => { + webpackAssert.assertOutputFileDoesNotHaveSourcemap( + 'main.js' + ); + webpackAssert.assertOutputFileDoesNotHaveSourcemap( + 'font.css' + ); + webpackAssert.assertOutputFileDoesNotHaveSourcemap( + 'bg.css' + ); + + done(); + }); + }); + it('Code splitting a scss file works', (done) => { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build');