玩转 webpack
程柳锋
腾讯高级工程师,IVWEB 团队社区和工程化负责人
27458 人已学习
新⼈⾸单¥68
课程目录
已完结/共 87 讲
加餐:webpack 5 专题内容 (3讲)
玩转 webpack
登录|注册
留言
20
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 22 | 自动清理构建目录产物
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 为什么需要构建工具
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
07 | 环境搭建:安装webpack
08 | webpack初体验:一个最简单的例子
09 | 通过npm script运行webpack
10 | webpack核心概念之entry
11 | webpack核心概念之output
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React JSX
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理分析
20 | 文件指纹策略:chunkhash、contenthash和hash
21 | HTML 、CSS和JavaScript代码压缩
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer自动补齐CSS3前缀
24 | 移动端CSS px自动转换成rem
25 | 静态资源内联
26 | 多页面应用打包通用方案
27 | 使用sourcemap
28 | 提取页面公共资源
29 | Tree Shaking的使用和原理分析
30 | Scope Hoisting使用和原理分析
31 | 代码分割和动态import
32 | 在webpack中使用ESLint
33 | webpack打包组件和基础库
34 | webpack实现SSR打包(上)
35 | webpack实现SSR打包(下)
36 | 优化构建时命令行的显示日志
37 | 构建异常和中断处理
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changelog生成
46 | 语义化版本(Semantic Versioning)规范格式
47 | 初级分析:使用webpack内置的stats
48 | 速度分析:使用speed-measure-webpack-plugin
49 | 体积分析:使用webpack-bundle-analyzer
50 | 使用高版本的webpack和Node.js
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模块
54 | 充分利用缓存提升二次构建速度
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无用的JavaScript和CSS
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设计
62 | Tapable是如何和webpack进行关联起来的?
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建和chunk生成阶段
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpack(上)
67 | 动手编写一个简易的webpack(下)
68 | loader的链式调用与执行顺序
69 | 使用loader-runner高效进行loader的调试
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧图的loader
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源为zip包的插件
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈Web商城的性能优化策略
83 | 功能开发总结
84 | 玩转webpack结束语
加餐:webpack 5 新特性解析
加餐:bundle和bundless的差异
加餐:Vite的构建原理
本节摘要
登录 后留言

全部留言(20)

  • 最新
  • 精选
Lexicographical
看了一下评论区的问题主要集中在 const CleanWebpackPlugin = require('clean-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); 的问题。 主要是clean-webpack-plugin这个插件进行了大版本升级,作者提供了不同的导出源码 class CleanWebpackPlugin { // ... } // v2+ var _default = CleanWebpackPlugin; exports.default = _default; module.exports = exports.default; module.exports.default = exports.default; // v3 exports.CleanWebpackPlugin = CleanWebpackPlugin; 可知v3只剩下解构一种方式了。

作者回复: 是的,可能这个插件的后续的版本会提供其它的类出来,手动滑稽

2019-06-04
2
13
Snail
这里应该在第二次build的时候把源代码的文件稍作修改,这样构建后文件指纹变了,CleanWebpackPlugin的作用看起来才直观些。

作者回复: 哈哈,细致,确实是的

2019-06-06
6
驴肉蒸饺
请问老师,这些plugin的引入顺序没有要求吗,我看您加入clean时,直接加到了最后面。

作者回复: loader 有严格的顺序要求 plugins 可能会存在顺序要求,不过很少,不是很严格,这个也是 webpack 会让人困惑的地方。因为 plugin 是通过 webpack 的 Tapable 的钩子进行事件控制的,也就是插件通过事件监听的方式进行执行。用的plugin会自己绑定相应的事件,所以一般不用关注顺序。

2019-06-05
4
John
老师,您好!麻烦你尽快上传第三章的讲课内容的PPT链接,给同学们下载方便学习,可以吗?非常感谢!

作者回复: 已上传

2019-06-08
1
DJ
我用了 const CleanWebpackPlugin = require('clean-webpack-plugin'); npm run build 提示错误 CleanWebpackPlugin is not a constructor 之后改为 const { CleanWebpackPlugin } = require('clean-webpack-plugin'); 就可以正常build 困惑:为什么要重构模块?

作者回复: 重新 build 的模块需求很多的。 1. 本地开发阶段:想看看代码打包出来的体积大小,比如一个页面打包出发发现有 1M 的 js,这个显然是不合理需要优化的。打包出来的图片资源太大(500k)、太小(3k)等等,这些都需要优化相关资源后再次打包看效果。 2. 机器部署资源到 cdn,每次机器部署也是会进行 npm run build 这个命令去打包代码,打包后进行资源同步的操作(ssh,rsync等)。每次 push 代码到 Git 等平台会重新触发构建。如果构建前不清理构建目录,那么需要部署的文件夹会越来越大,项目一多,机器磁盘都打爆了。 3. 线上代码发现错误,本地可以进行 npm run build 去代理线上脚本,修改完错误后也需要重新 build 看看结果

2019-06-04
1
殷川
老师👨‍🏫讲的节奏刚刚好 赞赞赞👍

作者回复: 感谢夸奖,哈哈

2019-06-12
RELAX
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); 的问题。 原作者为什么要这么写,非要让使用者解构一下?返回的对象里除了这个函数之外,还有其他的内容吗? 我觉得有点莫名其妙。 命名就是一个构造函数,也仅仅返回一个构造函数,直接模块导出这个构造函数不行吗?。。蛋疼。

作者回复: 确实比较蛋疼,主要这个插件就导出了这一个方法。。

2019-06-05
Devin
报这个错误:TypeError: CleanWebpackPlugin is not a constructor 改成: const { CleanWebpackPlugin } = require('clean-webpack-plugin') 就好了!

作者回复: 嗯嗯,clean-webpack-plugin(https://github.com/johnagan/clean-webpack-plugin) 在5.29的时候发布了3.0版本,用法变了。 主要明白为什么要清理构建目录哈,掌握精华

2019-06-04
KI
老师您好,跟着您的视频做,但项目报错:TypeError: CleanWebpackPlugin is not a constructor是什么原因?

作者回复: 嗯嗯,clean-webpack-plugin(https://github.com/johnagan/clean-webpack-plugin) 在5.29的时候发布了3.0版本,用法变了。 把这个插件的引入改成: const { CleanWebpackPlugin } = require('clean-webpack-plugin');

2019-06-04
花谢花开
引入要使用 { ClearWebpackPlugin } 不然要报错, 请问下老师这与您那种写法有什么区别

作者回复: 没差别,这个插件刚好在5.29号那天发布3.0大版本了,用法变了而已

2019-06-04
收起评论