当前播放: 22 | 自动清理构建目录产物
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:webpack与构建发展简史 (9讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
免费
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
07 | 环境搭建:安装webpack
免费
08 | webpack初体验:一个最简单的例子
09 | 通过npm script运行webpack
第二章:webpack基础用法 (12讲)
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代码压缩
第三章:webpack进阶用法 (16讲)
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 | 构建异常和中断处理
第四章:编写可维护的webpack构建配置 (9讲)
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changelog生成
46 | 语义化版本(Semantic Versioning)规范格式
第五章:webpack构建速度和体积优化策略 (12讲)
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服务
第六章:通过源代码掌握webpack打包原理 (9讲)
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设计
62 | Tapable是如何和webpack进行关联起来的?
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建和chunk生成阶段
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpack(上)
67 | 动手编写一个简易的webpack(下)
第七章:编写loader和插件 (7讲)
68 | loader的链式调用与执行顺序
69 | 使用loader-runner高效进行loader的调试
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧图的loader
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源为zip包的插件
第八章:React全家桶和webpack开发商城项目 (10讲)
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈web商城的性能优化策略
83 | 功能开发总结
84 | 结束语
22 | 自动清理构建目录产物

22 | 自动清理构建目录产物

程柳锋
腾讯高级工程师,IVWEB团队社区和工程化负责人
84讲 84课时,约900分钟5460
单独订阅¥99
2人成团¥79
4
本节摘要
登录 后留言

精选留言(15)

  • 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
    5
  • Mr. Van
    老师,dev环境文件写在缓存当中,为什么还要清理呢?多谢。
    2019-06-19
    2
    4
  • 生命之源( John Huang )
    老师,您好!麻烦你尽快上传第三章的讲课内容的PPT链接,给同学们下载方便学习,可以吗?非常感谢!

    作者回复: 已上传

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

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

    2019-06-06
    1
  • Leona
    老师,请问我不是很明白生产模式和开发模式在配置上到底有什么区别呢。哪些是在开发模式配置的哪些是在生产模式配置的呢?
    2019-09-08
  • RisingSun
    为什么我 const CleanWebpackPlugin=require('clean-webpack-plugin'); 必须写成
    const { CleanWebpackPlugin } = require('clean-webpack-plugin'); 才不报错
    2019-08-26
    1
  • 恶魔辣条儿
    Clean 这个plugin为啥放在plugins的最后, plugins的顺序有什么要求吗? 我以为要先清除, 要放在前面才合理诶.
    2019-08-08
  • 蔡鑫
    老师,由于各个plugin和loader的包一直在更新,所以在操作过程中一旦添加的依赖包(默认最新)和你的不一致。项目运行=就会报错!请问这个应该怎么解决?
    2019-07-05
  • 殷川
    老师👨‍🏫讲的节奏刚刚好 赞赞赞👍

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

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

    作者回复: loader 有严格的顺序要求

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

    2019-06-05
  • RELAX
    const { CleanWebpackPlugin } = require('clean-webpack-plugin');
    的问题。

    原作者为什么要这么写,非要让使用者解构一下?返回的对象里除了这个函数之外,还有其他的内容吗?
    我觉得有点莫名其妙。

    命名就是一个构造函数,也仅仅返回一个构造函数,直接模块导出这个构造函数不行吗?。。蛋疼。

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

    2019-06-05
  • 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
  • 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
收起评论
看过的人还看
TypeScript开发实战

梁宵  搜狗营销事业部高级架构师

47讲 | 3022 人已学习

拼团 ¥99 原价 ¥129
浏览器工作原理与实践

李兵  前盛大创新院高级研究员

43讲 | 6239 人已学习

拼团 ¥79 原价 ¥99
Node.js开发实战

杨浩  腾讯高级工程师

57讲 | 3836 人已学习

拼团 ¥99 原价 ¥129
重学前端

程劭非(winter)  前手机淘宝前端负责人

58讲 | 33048 人已学习

¥99