webpack4 系列教程(十四):Clean Plugin and Watch Mode

做者按:由于教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步《webpack4 系列教程(十四):Clean Plugin and Watch Mode》原文地址。更欢迎来个人小站看更多原创内容:godbmw.com,进行“姿式”交流 ♪(^∇^*)javascript

0. 课程介绍和资料

本节课的代码目录以下:html

本节课用的 plugin 和 loader 的配置文件package.json以下:java

{
  "devDependencies": {
    "clean-webpack-plugin": "^0.1.19",
    "html-webpack-plugin": "^3.2.0",
    "webpack": "^4.16.1"
  }
}

1. 什么是Clean PluginWatch Mode

在实际开发中,因为需求变化,会常常改动代码,而后用 webpack 进行打包发布。因为改动过多,咱们/dist/目录中会有不少版本的代码堆积在一块儿,乱七八糟。webpack

为了让打包目录更简洁,这时候须要Clean Plugin,在每次打包前,自动清理/dist/目录下的文件。git

除此以外,借助 webpack 命令自己的命令参数,能够开启Watch Mode:监察你的全部文件,任一文件有所变更,它就会马上从新自动打包。github

2. 编写入口文件和 js 脚本

入口文件app.js代码:web

console.log("This is entry js");

// ES6
import sum from "./vendor/sum";
console.log("sum(1, 2) = ", sum(1, 2));

// CommonJs
var minus = require("./vendor/minus");
console.log("minus(1, 2) = ", minus(1, 2));

// AMD
require(["./vendor/multi"], function(multi) {
  console.log("multi(1, 2) = ", multi(1, 2));
});

vendor/sum.js:json

export default function(a, b) {
  return a + b;
}

vendor/multi.js:数组

define(function(require, factory) {
  "use strict";
  return function(a, b) {
    return a * b;
  };
});

vendor/minus.js:app

module.exports = function(a, b) {
  return a - b;
};

3. 编写 webpack 配置文件

CleanWebpackPlugin参数传入数组,其中每一个元素是每次须要清空的文件目录。

须要注意的是:应该把CleanWebpackPlugin放在plugin配置项的最后一个,由于 webpack 配置是倒序的(最后配置的最早执行)。以保证每次正式打包前,先清空原来遗留的打包文件。

const webpack = require("webpack");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");

const path = require("path");

module.exports = {
  entry: {
    app: "./app.js"
  },
  output: {
    publicPath: __dirname + "/dist/", // js引用路径或者CDN地址
    path: path.resolve(__dirname, "dist"), // 打包文件的输出目录
    filename: "[name]-[hash:5].bundle.js",
    chunkFilename: "[name]-[hash:5].chunk.js"
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: "index.html",
      template: "./index.html",
      chunks: ["app"]
    }),
    new CleanWebpackPlugin(["dist"])
  ]
};

执行webpack打包,在控制台会首先输出一段关于相关文件夹已经清空的的提示,以下图所示:

4. 开启Watch Mode

直接在webpack命令后加上--watch参数便可:webpack --watch

控制台会提示用户“开启 watch”。我改动了一次文件,改动被 webpack 侦听到,就会自动从新打包。以下图所示:

若是想看到详细的打包过程,可使用:webpack -w --progress --display-reasons --color。控制台就会以花花绿绿的形式展现出打包过程,看起来比较酷炫:

相关文章
相关标签/搜索