【问题标题】:Minifying only JS files in webpack build在 webpack 构建中仅缩小 JS 文件
【发布时间】:2017-04-05 00:22:18
【问题描述】:

我正在使用 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 文件?

谢谢,
托默

【问题讨论】:

  • 我尝试将构建拆分成块,并从 UglifyJsPlugin 中排除 CSS 块,但没有成功。

标签: webpack uglifyjs webpack-style-loader


【解决方案1】:

见:Webpack Uglify errors in CSS 您可以添加test 来通过正则表达式丑化和过滤文件...

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

或者……

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

由于您要将 css 构建到单独的文件中,因此有两个 webpack.config,一个用于 js,另一个用于 css。不要忘记构建两者。

【讨论】:

  • 感谢您的评论。您的第一个解决方案将不起作用。 UglifyJsPlugin 获取已绑定到 bundle.js 的代码,因此过滤正则表达式是无用的。至于第二个,我猜它可以工作,但它涉及构建过程中的太多更改,我想阻止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2021-04-27
  • 1970-01-01
相关资源
最近更新 更多