前言
第1章 Webpack簡介1
1.1 何為Webpack1
1.2 為什麼需要Webpack2
1.2.1 何為模塊2
1.2.2 JavaScript中的模塊3
1.2.3 模塊打包工具4
1.2.4 為什麼選擇Webpack5
1.3 安裝5
1.4 打包第一個應用7
1.4.1 Hello World7
1.4.2 使用npm scripts9
1.4.3 使用默認目錄配置10
1.4.4 使用配置文件10
1.4.5 webpack-dev-server13
1.5 本章小結15
第2章 模塊打包17
2.1 CommonJS17
2.1.1 模塊18
2.1.2 導齣18
2.1.3 導入20
2.2 ES6 Module22
2.2.1 模塊22
2.2.2 導齣23
2.2.3 導入24
2.2.4 復閤寫法26
2.3 CommonJS與ES6 Module的區彆26
2.3.1 動態與靜態26
2.3.2 值拷貝與動態映射27
2.3.3 循環依賴29
2.4 加載其他類型模塊33
2.4.1 非模塊化文件34
2.4.2 AMD34
2.4.3 UMD35
2.4.4 加載npm模塊37
2.5 模塊打包原理38
2.6 本章小結41
第3章 資源輸入輸齣42
3.1 資源處理流程42
3.2 配置資源入口44
3.2.1 context44
3.2.2 entry45
3.2.3 實例47
3.3 配置資源齣口50
3.3.1 filename50
3.3.2 path53
3.3.3 publicPath54
3.3.4 實例56
3.4 本章小結57
第4章 預處理器59
4.1 一切皆模塊59
4.2 loader概述61
4.3 loader的配置63
4.3.1 loader的引入63
4.3.2 鏈式loader65
4.3.3 loader options65
4.3.4 更多配置66
4.4 常用loader介紹70
4.4.1 babel-loader70
4.4.2 ts-loader72
4.4.3 html-loader73
4.4.4 handlebars-loader73
4.4.5 file-loader74
4.4.6 url-loader76
4.4.7 vue-loader77
4.5 自定義loader78
4.6 本章小結82
第5章 樣式處理84
5.1 分離樣式文件84
5.1.1 extract-text-webpack-plugin85
5.1.2 多樣式文件的處理87
5.1.3 mini-css-extract-plugin89
5.2 樣式預處理91
5.2.1 Sass與SCSS91
5.2.2 Less93
5.3 PostCSS94
5.3.1 PostCSS與Webpack94
5.3.2 自動前綴95
5.3.3 stylelint96
5.3.4 CSSNext98
5.4 CSS Modules99
5.5 本章小結100
第6章 代碼分片101
6.1 通過入口劃分代碼101
6.2 CommonsChunkPlugin102
6.2.1 提取vendor105
6.2.2 設置提取範圍106
6.2.3 設置提取規則107
6.2.4 hash與長效緩存109
6.2.5 CommonsChunkPlugin的不足111
6.3 optimization.SplitChunks112
6.3.1 從命令式到聲明式114
6.3.2 默認的異步提取115
6.3.3 配置116
6.4 資源異步加載117
6.4.1 import()118
6.4.2 異步chunk的配置120
6.5 本章小結121
第7章 生産環境配置122
7.1 環境配置的封裝122
7.2 開啓production模式124
7.3 環境變量125
7.4 source map126
7.4.1 原理126
7.4.2 source map配置127
7.4.3 安全129
7.5 資源壓縮130
7.5.1 壓縮JavaScript130
7.5.2 壓縮CSS132
7.6 緩存133
7.6.1 資源hash133
7.6.2 輸齣動態HTML134
7.6.3 使chunk id更穩定136
7.7 bundle體積監控和分析138
7.8 本章小結140
第8章 打包優化141
8.1 HappyPack141
8.1.1 工作原理142
8.1.2 單個loader的優化142
8.1.3 多個loader的優化144
8.2 縮小打包作用域145
8.2.1 exclude和include145
8.2.2 noParse146
8.2.3 IgnorePlugin146
8.2.4 Cache147
8.3 動態鏈接庫與DllPlugin147
8.3.1 vendor配置148
8.3.2 vendor打包149
8.3.3 鏈接到業務代碼150
8.3.4 潛在問題151
8.4 tree shaking152
8.4.1 ES6 Module153
8.4.2 使用Webpack進行依賴關係構建153
8.4.3 使用壓縮工具去除死代碼154
8.5 本章小結154
第9章 開發環境調優155
9.1 Webpack開發效率插件155
9.1.1 webpack-dashboard155
9.1.2 webpack-merge157
9.1.3 speed-measure-webpack-plugin160
9.1.4 size-plugin160
9.2 模塊熱替換162
9.2.1 開啓HMR162
9.2.2 HMR原理164
9.2.3 HMR API示例166
9.3 本章小結168
第10章 更多JavaScript打包工具169
10.1 Rollup169
10.1.1 配置170
10.1.2 tree shaking171
10.1.3 可選的輸齣格式172
10.1.4 使用Rollup構建JavaScript庫173
10.2 Parcel173
10.2.1 打包速度174
10.2.2 零配置176
10.3 打包工具的發展趨勢178
10.3.1 性能與通用性178
10.3.2 配置極小化與工程標準化178
10.3.3 WebAssembly179
10.4 本章小結180
· · · · · · (
收起)