webpack的基础配置

2019-09-26  本文已影响0人  刘彪lastbee

webpack 基础

webpack.config.js

webpack默认的基础配置入口,真正的项目会根据开发环境自定义不同的入口


{
    loader: 'postcss-loader',
      options: {
         plugins: () => [
           require('autoprefixer') (
            {
              overrideBrowserslist: ['last 2 version', '>1%', 'ios 7']
             }
         )
       ]
  }
}

plugins

new HtmlWebpackPlugin({ // 打包输出HTML
    title: 'Hello World',
    minify: { // 压缩HTML文件
       removeComments: true, // 移除HTML中的注释
       collapseWhitespace: true, // 删除空白符与换行符
       minifyCSS: true// 压缩内联css
    },
    chunks: ['main'], // 入口js
    filename: 'index.html', // 文件名称
    template: path.join(__dirname, '../src/pages/index.html'), // 文件地址
  }),
new OptimizeCssAssetsWebpackPlugin({
  assetNameRegExp: /.css$/g,
  cssProcessor: require('cssnano')
}),
new MiniCssExtractPlugin({
   filename: '[name].css'
})

js压缩

optimization: {
    minimizer: [
      new UglifyJsPlugin({
        test: /\.js(\?.*)?$/i,  //测试匹配文件,
        include: /\/includes/, //包含哪些文件
        excluce: /\/excludes/, //不包含哪些文件

        //允许过滤哪些块应该被uglified(默认情况下,所有块都是uglified)。 
        //返回true以uglify块,否则返回false。
        chunkFilter: (chunk) => {
            // `vendor` 模块不压缩
            if (chunk.name === 'vendor') {
              return false;
            }
            return true;
          }
        }),
  
        cache: false,   //是否启用文件缓存,默认缓存在node_modules/.cache/uglifyjs-webpack-plugin.目录
        parallel: true,  //使用多进程并行运行来提高构建速度
    ],
  }

文件指纹

module.exports = {
  output: {
    // 入口文件多用于chunkhash
    filename: '[name][chunkhash:8].js',
  },
module: {
  rules: [
    {
        test: /.(png|jpe?g|svg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: 'img/[name][hash:8].[ext]'
            }
          }
        ]
     }
  ]
},
plugins: [
  new MiniCssExtractPlugin({
     // css多用于contenthash,必须采用此插件,才会生成独立文件
     filename: '[name][contenthash].css'
  })
]
}
上一篇下一篇

猜你喜欢

热点阅读