下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 22 | 自动清理构建目录产物
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

玩转webpack

共84讲 · 84课时,约900分钟
5401
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
免费
07 | 环境搭建:安装webpack
08 | webpack初体验:一个最简...
09 | 通过npm script运行webpa...
免费
10 | webpack核心概念之entry
免费
11 | webpack核心概念之output
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React...
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理...
20 | 文件指纹策略:chunkhash...
21 | HTML 、CSS和JavaScript...
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer...
24 | 移动端CSS px自动转换成r...
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规范和changel...
46 | 语义化版本(Semantic Ve...
47 | 初级分析:使用webpack内...
48 | 速度分析:使用speed-mea...
49 | 体积分析:使用webpack-b...
50 | 使用高版本的webpack和Nod...
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模...
54 | 充分利用缓存提升二次构建...
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无...
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设...
62 | Tapable是如何和webpack进...
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建...
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpac...
67 | 动手编写一个简易的webpac...
68 | loader的链式调用与执行顺...
69 | 使用loader-runner高效进...
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧...
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源...
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈web商城的性能优化策...
83 | 功能开发总结
84 | 结束语
本节摘要
展开

精选留言(15)

  • 2019-06-04
    看了一下评论区的问题主要集中在
    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只剩下解构一种方式了。
    展开

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

    5
  • 2019-06-19
    老师,dev环境文件写在缓存当中,为什么还要清理呢?多谢。
    2
    4
  • 老师,您好!麻烦你尽快上传第三章的讲课内容的PPT链接,给同学们下载方便学习,可以吗?非常感谢!

    作者回复: 已上传

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

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

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

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

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

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

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

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

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

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

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

  • 2019-06-04
    我用了 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
    报这个错误: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
    老师您好,跟着您的视频做,但项目报错: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大版本了,用法变了而已