22
33![ webpack_bg] ( http://images.pingan8787.com/webpack_bg.png )
44
5- 最近为了帮助公司新人入门 ` Webpack4 ` ,于是我整理了这么一份 ** 入门手册 ** ,这里也一起分享给需要的小伙伴啦 ~
5+ ## 介绍
66
7- 感觉现在的前端开发,已经基本上离不开 ` Webpack ` 霸霸了,并且在 ` Webpack4 ` 以后,有些插件变化特别大,使用方式也改变很大,实在容易掉坑。
7+ ### 1. 背景
8+
9+ 最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:** 帮助新人快速了解和融入公司团队** ,** 帮助零基础新人学习和入门前端开发** 并且** 达到公司业务开发水平** 。
10+
11+ 本文也是属于【EFT - 前端新手村】的一部分,用来帮助新人快速入门 ` Webpack4 ` ,内容偏基础,当然也可以作为复习材料~~ 这里分享给各位小伙伴啦!
12+
13+
14+ ### 2. 文章概要
815
916由于本文篇幅较长,将分为《** Webpack4入门手册(上)(共 18 章)** 》和《** Webpack4入门手册(下)(共 18 章)** 》两篇文章发布,请联系起来看~
1017
1522> 《Webpack4 的四个核心概念》
1623> https://github.com/pingan8787/Leo-JavaScript/blob/master/Cute-Webpack/guide/README.md
1724
25+ ### 3. 教程目录
1826
19- ## 一、 快速入门 demo
27+ ![ 教程目录 ] ( http://images.pingan8787.com/Webpack4%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.png )
2028
21- ### 1. 项目初始化
29+ ## 一、 项目初始化
2230
23- 新建文件夹 ` leo ` :
24- ``` sh
25- mkdir leo
26- ```
31+ ### 1. 初始化 demo
2732
28- 进入文件夹 ` cd leo` :
33+ 新建并进入文件夹 ` leo ` :
2934``` sh
35+ mkdir leo
3036cd leo
3137```
3238
33- 然后本地安装 ` webpack ` 和 ` webpack-cli ` (在 Webpack 4.0以后需要单独安装):
39+ 然后本地安装 ` webpack ` 和 ` webpack-cli ` (** 在 Webpack 4.0以后需要单独安装** ):
3440
3541``` sh
3642npm install webpack webpack-cli --save-dev
@@ -102,7 +108,7 @@ Entrypoint main = main.js
102108 + 1 hidden module
103109```
104110
105- 打包成功后,会保存在 ` dist ` 目录中。
111+ 打包成功后,生成的文件会保存在 ` dist ` 目录中。
106112
107113现在在 ` dist/index.html ` 中引入打包后的 ` main.js ` ,打开浏览器测试:
108114
@@ -129,16 +135,6 @@ Entrypoint main = main.js
129135 ├─webpack.config.js // webpack的配置文件
130136```
131137
132- 并在 ` index.css ` 文件给我们新建的 ` div ` 元素添加 ` class ` :
133-
134- ``` css
135- // src/style/index.css
136-
137- .box {
138- color : red ;
139- }
140- ```
141-
142138接着在 ` index.js ` 的新建元素方法中,添加 ` class ` 为 ` box ` ,这样新建的元素就带有 ` box ` 的 ` class ` 属性:
143139
144140``` diff
@@ -156,6 +152,17 @@ function createElement(){
156152document.body.appendChild(createElement());
157153```
158154
155+ 然后在 ` index.css ` 文件为 ` box ` :
156+
157+ ``` css
158+ // src/style/index.css
159+
160+ .box {
161+ color : red ;
162+ }
163+ ```
164+
165+
159166** 注意:**
160167
161168这里使用 ` import './style/index.css'; ` 引入我们的样式文件,是没办法解析使用,这时我们需要在 ` webpack ` 中使用到第三方 ` loader ` 插件,这里我们使用:
@@ -186,7 +193,10 @@ module: {
186193}
187194```
188195
189- 这段代码中,` test ` 的值表示** 需要匹配的模块后缀名** ,` use ` 则表示对应** 处理的 loader 插件名称** (处理顺序是从右往左)。
196+ 参数介绍:
197+
198+ ` test ` :** 需要匹配的模块后缀名** ;
199+ ` use ` :对应** 处理的 loader 插件名称** (处理顺序是从右往左)。
190200
191201### 3. 打包测试
192202
@@ -206,21 +216,21 @@ Entrypoint main = main.js
206216 + 3 hidden modules
207217```
208218
209- 然后打开 ` index.html ` 可以看见,文本样式已经变成红色 ,并且 ` css ` 代码已经添加到 ` <style> ` 标签上。
219+ 这时候可以看见 ` index.html ` 中,文本已经变成红色 ,并且 ` css ` 代码已经添加到 ` <style> ` 标签上。
210220
211221![ webpack01] ( http://images.pingan8787.com/webpack01.png )
212222
213223## 三、 webpack 模块介绍和处理 sass
214224
215- 在这一节中,我们会介绍 ` weboack ` 中关于模块的一些概念,并且会介绍在上一节基础上,如何去处理 ` sass ` 文件。
225+ 在这一节中,我们会介绍 ` webpack ` 中的模块,并且介绍如何去处理 ` sass ` 文件。
216226
217227### 1. webpack 模块介绍
218228
219229这里介绍的模块(module)是指 ` webpack.config.js ` 文件中的 ` module ` 配置,它决定了如何处理项目中的不同类型模块。
220230
221231比如上一节介绍的,使用 ` style-loader ` 、 ` css-loader ` 两个插件去处理 ` css ` 文件。
222232
223- webpack 模块支持如下语句:
233+ ` webpack ` 模块支持如下语句:
224234
225235* ES2015 ` import ` 语句;
226236* CommonJS ` require() ` 语句;
@@ -230,15 +240,16 @@ webpack 模块支持如下语句:
230240
231241这里建议使用 ` ES2015 ` 的引入方法,毕竟这是标准。
232242
233- 另外,所有的 [ webpack 配置选项] ( https://www.webpackjs.com/configuration/ ) 可以在中文官网查看,我们入门只学习常用模块。
243+ > 更多参数介绍,可访问中文官网的介绍:
244+ > [ 《webpack 配置选项》] ( https://www.webpackjs.com/configuration/ ) https://www.webpackjs.com/configuration/
234245
235246### 2. 常用模块
236247
237248#### 2.1 module.noParse
238249
239250值的类型:` RegExp | [RegExp] | function `
240251
241- 防止 webpack 解析那些符合匹配条件的文件,忽略的文件夹中不应该含有 ` import ` 、` require ` 、` define ` 的调用,或任何其他导入机制,忽略的 library 可以提高构建效率 。
252+ 防止 ` webpack ` 解析那些符合匹配条件的文件,忽略的文件夹中不应该含有 ` import ` 、` require ` 、` define ` 的调用,或任何其他导入机制,忽略的 ` library ` 可以 ** 提高构建效率 ** 。
242253
243254``` js
244255// webpack.config.js
@@ -329,7 +340,7 @@ import './style/leo.scss';
329340![ webpack03] ( http://images.pingan8787.com/webpack03.png )
330341
331342
332- ### 4. 小技巧
343+ ### 4. 添加快捷打包命令
333344
334345像 ` npx webpack ` 这个命令我们需要经常使用,对于这种命令,我们可以把它写成命令,方便每次使用。
335346
@@ -341,8 +352,7 @@ import './style/leo.scss';
341352},
342353```
343354
344- 这里的 ` -c webpack.config.js ` 中,` -c ` 后面跟着的是 ` webpack ` 配置文件,默认可以不写。
345-
355+ 这里的 ` -c webpack.config.js ` 中,` -c ` 后面跟着的是 ` webpack ` 配置文件的文件名,默认可以不写。
346356
347357
348358## 四、 webpack 开启 SourceMap 和添加 CSS3 前缀
@@ -374,7 +384,7 @@ rules: [
374384]
375385```
376386
377- 再重新打包,看下 ` index.html ` 的样式,可以看到, 样式已经定位到源文件上了:
387+ 再重新打包,看下 ` index.html ` 的样式,样式已经定位到源文件上了:
378388
379389![ webpack04] ( http://images.pingan8787.com/webpack04.png )
380390
@@ -399,8 +409,8 @@ npm install postcss-loader autoprefixer --save-dev
399409
400410* ` postcss-import ` 让我们可以在` @import ` CSS文件的时 ` webpack ` 能监听并编译。
401411
402-
403- ` postcss-loader ` 更多介绍和使用可以查看文档 [ 《postcss-loader》] ( https://www.webpackjs.com/loaders/postcss-loader/ ) https://www.webpackjs.com/loaders/postcss-loader/。
412+ > 更多参数介绍,可访问中文官网的介绍:
413+ > [ 《postcss-loader》] ( https://www.webpackjs.com/loaders/postcss-loader/ ) https://www.webpackjs.com/loaders/postcss-loader/
404414
405415开始添加 ` postcss-loader ` 并设置 ` autoprefixer ` :
406416
@@ -647,7 +657,7 @@ module.exports = {
647657}
648658```
649659
650- 配置完成后,重新打包,就可以看到文件名中包含了 hash 值了:
660+ 配置完成后,重新打包,就可以看到文件名中包含了 ` hash ` 值了:
651661
652662![ webpack08] ( http://images.pingan8787.com/webpack08.png )
653663
@@ -698,7 +708,7 @@ plugins: [
698708
699709## 八、 webpack 清理目录插件
700710
701- 在之前,我们每次打包都会生成新的文件,并且在添加 hash 值以后,文件名不会出现重复的情况,导致每次打包都会生成新文件,并且这些文件都用不到 。
711+ 在之前,我们每次打包都会生成新的文件,并且在添加 ` hash ` 值以后,文件名不会出现重复的情况,导致旧文件的冗余 。
702712
703713为了解决这个问题,我们需要在每次打包之前,将 ` /dist ` 目录清空,再进行打包。
704714
@@ -732,7 +742,9 @@ plugins: [
732742
733743这样我们每次打包之前,都会先将 ` /dist ` 目录清空一次,再执行打包。
734744
735- 关于 ` clean-webpack-plugin ` 更多介绍可以[ 《查看文档》] ( https://github.com/jantimon/clean-webpack-plugin ) https://github.com/jantimon/clean-webpack-plugin/。
745+ > 更多参数介绍,可访问中文官网的介绍:
746+ > [ 《clean-webpack-plugin》] ( https://github.com/jantimon/clean-webpack-plugin ) https://github.com/jantimon/clean-webpack-plugin/。
747+
736748
737749## 九、 webpack 图片处理和优化
738750
@@ -811,7 +823,8 @@ module: {
811823},
812824```
813825
814- 关于 ` image-webpack-loader ` 更多介绍可以[ 《查看文档》] ( https://github.com/tcoopman/image-webpack-loader ) https://github.com/tcoopman/image-webpack-loader。
826+ > 更多参数介绍,可访问中文官网的介绍:
827+ > [ 《image-webpack-loader》] ( https://github.com/tcoopman/image-webpack-loader ) https://github.com/tcoopman/
815828
816829再重新打包,我们可以看到图片打包前后,压缩了很大:
817830
@@ -861,7 +874,9 @@ module: {
861874},
862875```
863876
864- 关于 ` url-loader ` 更多介绍可以[ 《查看文档》] ( https://github.com/webpack-contrib/url-loader ) https://github.com/webpack-contrib/url-loader。
877+ > 更多参数介绍,可访问中文官网的介绍:
878+ > [ 《url-loader》] ( https://github.com/webpack-contrib/url-loader ) https://github.com/webpack-contrib/url-loader。
879+
865880
866881### 2. 字体处理
867882
@@ -1094,7 +1109,7 @@ let prodConfig = {
10941109module .exports = merge (common, prodConfig)
10951110```
10961111
1097- ## 十二、 webpack 监控自动编译和启用 js 是 sourceMap
1112+ ## 十二、 webpack 监控自动编译和启用 js 的 sourceMap
10981113
10991114### 1. 开启 js 的 sourceMap
11001115
@@ -1294,7 +1309,7 @@ npm install babel-loader standard --save-dev
12941309/node_modules/
12951310` ` `
12961311
1297- ## 十六、 webpack 模块解析拓展名和别名
1312+ ## 十六、 webpack 解析模块拓展名和别名
12981313
12991314在 webpack 配置中,我们使用 ` resolve` 来配置模块解析方式。
13001315
@@ -1360,7 +1375,8 @@ alias: {
13601375}
13611376` ` `
13621377
1363- 关于 ` resolve` 更多介绍可以[《查看文档》](https: // www.webpackjs.com/configuration/resolve/)https://www.webpackjs.com/configuration/resolve/。
1378+ > 更多参数介绍,可访问中文官网的介绍:
1379+ > [《resolve》](https: // www.webpackjs.com/configuration/resolve/)https://www.webpackjs.com/configuration/resolve/。
13641380
13651381
13661382### 2. resolve .extensions
@@ -1408,7 +1424,8 @@ import $ from 'jquery';
14081424$('.leo').show();
14091425` ` `
14101426
1411- 关于 ` externals` 更多介绍可以[《查看文档》](https: // www.webpackjs.com/configuration/externals/)https://www.webpackjs.com/configuration/externals/。
1427+ > 更多参数介绍,可访问中文官网的介绍:
1428+ > [《externals》](https: // www.webpackjs.com/configuration/externals/)https://www.webpackjs.com/configuration/externals/。
14121429
14131430## 十八、 webpack 打包分析报表及优化总结
14141431
@@ -1485,20 +1502,24 @@ externals: {
14851502
14861503! [webpack16](http: // images.pingan8787.com/webpack16.png)
14871504
1488- 关于 ` webpack-bundle-analyzer` 更多介绍可以[《查看文档》](https: // github.com/webpack-contrib/webpack-bundle-analyzer)https://github.com/webpack-contrib/webpack-bundle-analyzer。
1505+ > 更多参数介绍,可访问中文官网的介绍:
1506+ > [《webpack- bundle- analyzer》](https: // github.com/webpack-contrib/webpack-bundle-analyzer)https://github.com/webpack-contrib/webpack-bundle-analyzer。
14891507
14901508
14911509## 参考资料
14921510
1511+ * [《Webpack4 中文网》](https: // www.webpackjs.com)
1512+
14931513* [《2019 最新Webpack4.0 教程4 .x 成仙之路》](https: // www.bilibili.com/video/av41546218/?p=1)
14941514
1515+
14951516## 总结
14961517
14971518本文是根据 [《2019 最新Webpack4.0 教程4 .x 成仙之路》](https: // www.bilibili.com/video/av41546218/?p=1) 学习总结下来的学习之路,适合入门,涉及范围较多,内容比较长,需要能静下心来学习。
14981519
14991520内容如果有误,欢迎留言指点,我会及时修改。
15001521
1501- 本文代码最终托管在我的 github 上,[点击查看](https: // github.com/pingan8787/Leo-JavaScript/blob/master/Cute-Webpack/introduction/README.md)。
1522+ 本文代码最终托管在我的 github 上,[点击查看](https: // github.com/pingan8787/Leo-JavaScript/blob/master/Cute-Webpack/introduction/README.md)(https://github.com/pingan8787/Leo-JavaScript/blob/master/Cute-Webpack/introduction/README.md) 。
15021523
15031524
15041525希望自己的文章会对各位有所帮助,也欢迎各位大佬指点。
0 commit comments