仅减少webpack构建中的JS文件

时间:2016-11-21 14:53:45

标签: webpack uglifyjs webpack-style-loader

我使用webpack进行生产构建,如下所示:



module.exports = {
    devtool: 'source-map',
    entry: [
        'babel-polyfill',
        './src/index'
    ],
    output: {
        filename: 'bundle.js',
        path: path.join(__dirname, 'dist')
    },
    plugins: [
        new webpack.optimize.OccurenceOrderPlugin(),
        new webpack.optimize.DedupePlugin(),
        new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en|he/),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify('production')
        }),
        new ExtractTextPlugin('style.css'),
        new webpack.optimize.UglifyJsPlugin({
            compressor: {
                warnings: false
            }
        })
    ],
    module: {
        loaders: [
            {
                test: /\.js$/,
                loaders: ['babel'],
                include: path.join(__dirname, 'src'),
                exclude: path.join(__dirname, 'src', 'test')
            },
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('css?-minimize!sass!postcss-loader'),
                include: path.join(__dirname, 'src', 'styles')
            },
            {
                test: /\.(jpe?g|png|gif)$/i,
                loader: 'url?limit=8192',
                include: path.join(__dirname, 'assets')
            },
            {
                test: /\.svg$/,
                loader: 'babel!svg-react',
                include: path.join(__dirname, 'assets')
            }
        ]
    },
    postcss: [autoprefixer({ browsers: ['last 2 versions'] })]
};




如您所见,代码由UglifyJsPlugin缩小。问题是它还缩小了CSS文件(由ExtractTextPlugin提取)。我想避免CSS缩小,以便在构建之后处理它。

如何告诉插件只缩小我的JS文件?

谢谢,
托默

1 个答案:

答案 0 :(得分:-1)

请参阅:Webpack Uglify errors in CSS 您可以通过正则表达式添加test到uglify和过滤文件...

new webpack.optimize.UglifyJsPlugin({
  test: /\.(js|jsx)$/
})

或者...

您不必在一个webpack.config.js中执行所有操作。

由于您正在将css构建为单独的文件,因此需要两个webpack.configs,一个用于执行js,另一个用于执行css。不要忘记建立两者。