webpack

164 阅读1分钟

常用plugin

webpack-merge

合并两个配置文件,他是webpack插件,引入webpack模块即可使用; 应用场景:区分开发环境/生产环境

const webpack = require('webpack');
module.exports = merge(base, {
  // 一些配置
}

CleanWebpackPlugin

打包前清空上次打包内容。

let { CleanWebpackPlugin } = require("clean-webpack-plugin");
plugins: [
    new CleanWebpackPlugin()
]

html-webpack-plugin

简单创建 HTML 文件

const HtmlWebpackPlugin = require('html-webpack-plugin')
  plugins: [
    new HtmlWebpackPlugin({ // 打包输出HTML
      title: 'Hello World app',
      minify: { // 压缩HTML文件
        removeComments: true, // 移除HTML中的注释
        collapseWhitespace: true, // 删除空白符与换行符
        minifyCSS: true// 压缩内联css
      },
      filename: 'index.html',
      template: 'index.html'
    }),
  ]

mini-css-extract-plugin

可以把样式抽离成一个css文件

// 先安装然后引入,import和require都是可以的
// import './index.css'
require('./index.css')
// 这个插件要同时使用他的loader和plugin才行
plugins:[
  new MiniCssExtractPlugin({
    filename: 'css/main.css'
  }),
],
 module: {
   rules: [
      {
        test: /\.css$/,
        loader: [MiniCssExtractPlugin.loader, 'css-loader']
      }
    ]
 }

uglifyJsPlugin

JS压缩插件, webpack4默认是生产环境,自带js压缩功能

OptimizeCssAssetsPlugin

css代码压缩

new OptimizeCssAssetsPlugin({
   assetNameRegExp:/\.css$/g,
   cssProcessor:require("cssnano"),
   cssProcessorPluginOptions:{
     preset:['default',{discardComments:{removeAll:true}}]
   },
   canPrint:true
 })

HotModuleReplacementPlugin

热更新插件,他是一个webpack自带插件

new webpack.HotModuleReplacementPlugin()
// 模块属性
devServer:{
    hot:true
}

DefinePlugin

定义环境变量插件,是一个webpack自带插件

new webpack.DefinePlugin({
      DEV: JSON.stringify('dev')
    }),