玖叶教程网

前端编程开发入门

webpack5之打包自动清理目录(webpack打包缓存)

在生产环境下,每次打包构建后,都会生成hash值不用的文件,造成了很多冗余的文件,因此我们需要引入一个插件来在打包的时候先清理目录。

npm i clean-webpack-plugin -D

webpack.prod.js的配置如下:

const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');//打包html
const MiniCssExtractPlugin = require('mini-css-extract-plugin');//分离样式
const CssMinimizerWebpackPlugin = require('css-minimizer-webpack-plugin');//压缩css
const { CleanWebpackPlugin } = require('clean-webpack-plugin');//打包前清理文件夹
const { merge } = require('webpack-merge');
const commonConfig = require('./webpack.base.js');
let prodConfig = {
  entry: './src/main.js',
  output: {
    filename: 'bundle-[name]-[chunkhash].js',
    path: resolve(__dirname, '../dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader']
      },
      {
        test: /\.less$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'less-loader']
      },
      {
        test: /\.scss$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader']
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          cacheDirectory: true//开启babel缓存
        }
      },
    ]
  },
  plugins: [
    //清理目录
    new CleanWebpackPlugin(),
    // 打包html
    new HtmlWebpackPlugin({
      template: './src/assets/index.html',
      hash: true,
      filename: 'index.html',
      favicon: './src/assets/favicon.ico',
      minify: {
        collapseWhitespace: true,//移除空格
        removeComments: true,//移除注释
      }
    }),
    // 压缩css
    new CssMinimizerWebpackPlugin(),
    // 分离css
    new MiniCssExtractPlugin({
      filename: 'index-[name]-[contenthash].css'
    })
  ],
  mode: 'production',
  target: 'es5',
}
module.exports = merge(commonConfig, prodConfig);

package.json的配置如下:

{
  "name": "wpk5-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "serve": "npx webpack serve --config ./build/webpack.dev.js",
    "build": "npx webpack --config ./build/webpack.prod.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.13.14",
    "@babel/preset-env": "^7.13.12",
    "babel-loader": "^8.2.2",
    "clean-webpack-plugin": "^4.0.0-alpha.0",
    "css-loader": "^5.2.0",
    "css-minimizer-webpack-plugin": "^1.3.0",
    "eslint": "^7.23.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-import": "^2.22.1",
    "file-loader": "^6.2.0",
    "html-loader": "^2.1.2",
    "html-webpack-plugin": "^5.3.1",
    "less": "^4.1.1",
    "less-loader": "^8.0.0",
    "mini-css-extract-plugin": "^1.4.0",
    "node-sass": "^5.0.0",
    "postcss-loader": "^5.2.0",
    "postcss-preset-env": "^6.7.0",
    "sass-loader": "^11.0.1",
    "style-loader": "^2.0.0",
    "url-loader": "^4.1.1",
    "webpack": "^5.28.0",
    "webpack-cli": "^4.5.0",
    "webpack-dev-server": "^3.11.2",
    "webpack-merge": "^5.7.3"
  },
  "dependencies": {
    "core-js": "^3.10.0",
    "regenerator-runtime": "^0.13.7"
  }
}

git仓库地址:

https://gitee.com/seimin/xiaoming2qianduan-webpack5/tree/v5.15/

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言