玩转 webpack
程柳锋
腾讯高级工程师,IVWEB 团队社区和工程化负责人
27458 人已学习
新⼈⾸单¥68
课程目录
已完结/共 87 讲
加餐:webpack 5 专题内容 (3讲)
玩转 webpack
登录|注册
留言
31
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 20 | 文件指纹策略:chunkhash、contenthash和hash
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的构建原理
本节摘要
登录 后留言

全部留言(31)

  • 最新
  • 精选
翰弟
都用contentHash有什么问题么

作者回复: js 里面没有 contenthash 哈,图片和 css 直接用这个也是可以的

2019-06-05
6
3
KaKa
你好 请问已经在项目环境中了 为啥 每回都要code . 一下啊? 不太懂。能私回我吗?感觉问的太白痴,可是不问又不知道

作者回复: code . 这个就是在命令行里打开 vscode 哈,你可以在 vscode 里把 code 加入到环境变量里去

2019-05-31
3
1
Populus alba
试了下,图片使用 hash 指纹,并非整个项目 hash(contenthash、chunkhash)发生改变。 多入口时,只影响引入图片的 entry 文件、相关的 css 文件。 ???

作者回复: 视频里也说了图片的hash和css/js资源的hash概念不一样,图片的hash是由图片内容决定的。 如果css/js都是使用hash作为文件指纹的话,那么某一个js或者css发生改变,所有打包出来的css/js指纹都会变化。

2019-07-06
2
朱潇伟
js为什么不也用contenthash

作者回复: 因为JS 没有 contenthash,只能从chunkhash和hadh里面选。但是hash对于js的含义是整个构建的文件指纹,每次构建有任何文件变了这个值都会变。所以js只能用chunkhash

2019-06-10
谭低调
使用hash的场景还应该结合mode来考略,如果mode是development的时候,在使用hmr的情况下,chunk使用chunkhash是不适合的,应该使用hash。而在mode是production的时候,就是不用hmr的情况下,这时候就适合使用chunkhash了
2019-12-12
11
Geek_1ec07b
安装了'mini-css-extract-plugin'插件,plugins也做了配置,但是打包的时候报错: TypeError: Cannot read property 'thisCompilation' of undefined
2020-04-04
3
undefined
https://webpack.js.org/guides/caching/ js 有 contenthash
2020-03-14
3
奔奔
老师,我的js里面使用contenthashbuild成功了 'use strict'; const path = require('path'); const webpack = require('webpack'); console.log(__dirname, 'dist'); console.log(path.join(__dirname, 'dist')); // __dirname 当前目录 /remaineey/workspace/webpack module.exports = { entry: './src/index.js', // 单入口 entry: { // 多入口 index: './src/index.js', search: './src/search.js', }, output: { path: path.join(__dirname, 'dist'), filename: '[name][contenthash:8].js', }, mode: 'development', module: { rules: [ { test: /\.js$/, use: 'babel-loader' }, { test: /\.css$/, use: [ 'style-loader', 'css-loader', ] }, { test: /\.less$/, use: [ 'style-loader', 'css-loader', 'less-loader' ] }, { test: /\.(jpeg|png|jpg)$/, use: [ { loader: 'url-loader', options: { limit: 333330, } } ] } ] }, // 默认是false,不开启 // 参考: https://www.webpackjs.com/configuration/watch/ // watch: true, // // 只有开启监听模式时,watch才有意义 // watchOptions: { // // 不监听的文件或者文件目录,支持正则匹配 // ignored: /node_modules/, // // 当第一个文件更改,会在重新构建前增加延迟。这个选项允许 webpack 将这段时间内进行的任何其他更改都聚合到一次重新构建里。以毫秒为单位 // aggregateTimeout: 300, // // 通过传递 true 开启 polling,或者指定毫秒为单位进行轮询。 // poll: 1000 // 每秒检查一次变动 // }, // 热替换影响了chunkhash的使用,你要确保hotModuleReplacementPlugin()函数没在生产环境下执行 // plugins: [ // new webpack.HotModuleReplacementPlugin() // ], devServer: { contentBase: './dist', hot: true } };
2019-07-23
2
Geek_10ebab
看到留言里面多次提到JS没有 contenthash,想问下为什么JS没有,而css文件却有呢?
2019-06-25
2
2
要注依赖的意版本号,版本号对不上就会报一些奇怪的错误。。
2021-07-12
1
收起评论