使用 webpack 自动压缩文件


作者:Seiya

时间:2019年07月14日


JavaScript 文件压缩


在 webpack4.0 中内置了 uglifyjs-webpack-plugin 插件,所以我们打包出来的 js 文件已经默认进行了压缩,不需要进行额外的



css 文件压缩


在进行 css 文件压缩时,需要用到以下两个插件:

  • optimize-css-assets-webpack-plugin:在 webpack 构建期间搜索 css 资源,并优化 css 代码(默认情况下使用 cssnano 但可以指定 css 处理器);

  • cssnano:cssnano 是一个在 PostCSS 生态系统之上编写的现代模块化压缩工具,可以用来压缩 css 代码;


具体配置如下:

const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {
  ...
  plugins: [
    new OptimizeCSSAssetsPlugin({
      assetNameRegExp: /\.css$/g,
      cssProcessor: require('cssnano’)
    })
  ]
}


html 文件压缩


在进行 html 文件压缩时,需要用到以下插件:

  • html-webpack-plugin:使用该插件将自动生成一个 HTML5 文件,配置其中的参数,可以帮助我们实现 html 文件的压缩

具体配置如下:

const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {
  ...
  plugins: [
    new HtmlWebpackPlugin({
      /* 指定模板所在路径 */
      template: path.join(__dirname, 'src/search.html’),
      /* 输出的文件名 */
      filename: 'search.html’,
      /* chunks 主要用于多入口文件,当有多个入口文件,编译后生成多个文件,chunks 参数能选择要使用哪些些js文件 */
      chunks: ['search’],
      /* 自动注入 css 和 js */
      inject: true,
      /* 使用 minify 会对生成的 html 文件进行压缩 */
      minify: {
        html5: true,                //
        collapseWhitespace: true,   // 删除空白符与换行符
        preserveLineBreaks: false,  // Prevents the escaping of the values of attributes
        minifyCSS: true,            // 是否压缩 html 里的 css(使用 clean-css 进行的压缩)
        minifyJS: true,             // 是否压缩 html 里的 js(使用 uglify-js 进行的压缩)
        removeComments: false       // 移除HTML中的注释
      }
    })
  ]
}
最后更新时间: 2019-7-14 19:19:06