webpack 静态资源合并
趁工作之余从零构建了一个webpack4.x多页面应用程序。过程中也遇到一些坑,就记录下来了。
webpack核心概念
- Entry:入口,Webpack 执行构建的第一步将从 Entry 开始。
- Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。
- Chunk:代码块,一个 Chunk 由多个模块组合而成,用于代码合并与分割。
- Loader:模块转换器,用于把模块原内容按照需求转换成新内容。
- Plugin:扩展插件,在 Webpack 构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要的事情。
- Output:输出结果,在 Webpack 经过一系列处理并得出最终想要的代码后输出结果。
- 项目的运行主要围绕的就是这几大块
首先看一下构建后目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1.多页面的入口文件
修改 webpack.base.conf.js代码
1 2 3 4 5 |
|
2.配置开发服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
3.配置loader
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
4.从js中分离css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
5.清空打包目录
1 2 3 4 5 6 7 8 9 10 11 |
|
6. 压缩js
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
7.提取js公共模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
在 webpack.base.conf.js利配置externals后webpack就不会去打包配置模块
1 2 3 4 |
|
8.复制静态资源
1 2 3 4 5 6 7 |
|
9.产出html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
10.性能优化 高大上的可视化分析模块
1 2 3 4 |
|
cmd-markdown-logo
通过这个页面可以看到哪些页面是由哪些模块组成的,通过这个可视化页面可以更加方便去定位哪个包臃肿了,然后去优化。
报错 & 解决办法
Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
后来发现webpack4不支持extract-text-webpack-plugin 必须下载next版本安装这个插件
1 |
|
https://github.com/webpack-contrib/extract-text-webpack-plugin/issues/701