Skip to content

Commit 0b372a7

Browse files
committed
2019.08.13
1 parent 7329338 commit 0b372a7

3 files changed

Lines changed: 1665 additions & 44 deletions

File tree

Cute-Webpack/introduction/README.md

Lines changed: 65 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@
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

@@ -15,22 +22,21 @@
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
3036
cd leo
3137
```
3238

33-
然后本地安装 `webpack``webpack-cli` (在 Webpack 4.0以后需要单独安装):
39+
然后本地安装 `webpack``webpack-cli`**在 Webpack 4.0以后需要单独安装**):
3440

3541
```sh
3642
npm 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(){
156152
document.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 = {
10941109
module.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

Comments
 (0)