clean-webpack-plugin


清空dist文件
在webpack5中在output设置 clear:true开启
在生成文件之前清空 output 目录

output.clean5.20+

  1. module.exports = {
  2. //...
  3. output: {
  4. clean: true, // 在生成文件之前清空 output 目录
  5. },
  6. };

打印而不是删除应该移除的静态资源

  1. module.exports = {
  2. //...
  3. output: {
  4. clean: {
  5. dry: true, // 打印而不是删除应该移除的静态资源
  6. },
  7. },
  8. };

保留 ‘ignored/dir’ 下的静态资源

  1. module.exports = {
  2. //...
  3. output: {
  4. clean: {
  5. keep: /ignored\/dir\//, // 保留 'ignored/dir' 下的静态资源
  6. },
  7. },
  8. };

html-webpack-plugin


生成htm 模板

  1. const htmlWebpackPlugin = require('html-webpack-plugin');
  2. plugins: [
  3. new htmlWebpackPlugin({
  4. template: './public/index.html',
  5. title: 'webpack-demo',
  6. cdn,
  7. ],

可以再html中配置ejs语法去除插件内的options,可以用来部署cdn

  1. <title>
  2. <%= htmlWebpackPlugin.options.title %>
  3. </title>

DefinePlugin(webpack 内置)


可以替换文件中出现的语句
注意,需要替换字符串需要 "" 包裹

  1. const { DefinePlugin } = require('webpack')
  2. plugins: [
  3. new DefinePlugin({
  4. BASE_URL: '"./"'
  5. }),
  6. ]

相似插件

EnvironmentPlugin

  1. new webpack.EnvironmentPlugin(['NODE_ENV', 'DEBUG'])
  2. // 这相当于下面的 DefinePlugin 应用程序
  3. new webpack.DefinePlugin({
  4. 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
  5. 'process.env.DEBUG': JSON.stringify(process.env.DEBUG),
  6. });

dotenv-webpack


能够读取.env文件内的属性,覆盖在process.env上

  1. // .env
  2. DB_HOST=127.0.0.1
  3. DB_PASS=foobar
  4. S3_API=mysecretkey
  1. const Dotenv = require('dotenv-webpack');
  2. plugins: [
  3. new Dotenv(),
  4. ],

copy-webpack-plugin


将文件拷贝入打包文件
省略to文件将会,以output的path为复制的终点

  1. plugins: [
  2. new CopyWebpackPlugin({
  3. patterns: [
  4. {
  5. from: 'public',
  6. globOptions: {
  7. ignore: ['**/index.html']
  8. }
  9. }
  10. ]
  11. ]