经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JSJS库框架 » JavaScript » 查看文章
webpack4 系列教程(十四):Clean Plugin and Watch Mode
来源:cnblogs  作者:GodBMW  时间:2018/10/22 16:23:30  对本文有异议

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

0. 课程介绍和资料

本节课的代码目录如下:

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

  1. {
  2. "devDependencies": {
  3. "clean-webpack-plugin": "^0.1.19",
  4. "html-webpack-plugin": "^3.2.0",
  5. "webpack": "^4.16.1"
  6. }
  7. }

1. 什么是Clean PluginWatch Mode

在实际开发中,由于需求变化,会经常改动代码,然后用 webpack 进行打包发布。由于改动过多,我们/dist/目录中会有很多版本的代码堆积在一起,乱七八糟。

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

除此之外,借助 webpack 命令本身的命令参数,可以开启Watch Mode:监察你的所有文件,任一文件有所变动,它就会立刻重新自动打包。

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

入口文件app.js代码:

  1. console.log("This is entry js");
  2. // ES6
  3. import sum from "./vendor/sum";
  4. console.log("sum(1, 2) = ", sum(1, 2));
  5. // CommonJs
  6. var minus = require("./vendor/minus");
  7. console.log("minus(1, 2) = ", minus(1, 2));
  8. // AMD
  9. require(["./vendor/multi"], function(multi) {
  10. console.log("multi(1, 2) = ", multi(1, 2));
  11. });

vendor/sum.js:

  1. export default function(a, b) {
  2. return a + b;
  3. }

vendor/multi.js:

  1. define(function(require, factory) {
  2. "use strict";
  3. return function(a, b) {
  4. return a * b;
  5. };
  6. });

vendor/minus.js:

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

3. 编写 webpack 配置文件

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

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

  1. const webpack = require("webpack");
  2. const HtmlWebpackPlugin = require("html-webpack-plugin");
  3. const CleanWebpackPlugin = require("clean-webpack-plugin");
  4. const path = require("path");
  5. module.exports = {
  6. entry: {
  7. app: "./app.js"
  8. },
  9. output: {
  10. publicPath: __dirname + "/dist/", // js引用路径或者CDN地址
  11. path: path.resolve(__dirname, "dist"), // 打包文件的输出目录
  12. filename: "[name]-[hash:5].bundle.js",
  13. chunkFilename: "[name]-[hash:5].chunk.js"
  14. },
  15. plugins: [
  16. new HtmlWebpackPlugin({
  17. filename: "index.html",
  18. template: "./index.html",
  19. chunks: ["app"]
  20. }),
  21. new CleanWebpackPlugin(["dist"])
  22. ]
  23. };

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

4. 开启Watch Mode

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

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号