webpack.config.js
1 | const path = require('path') |
package.json
1 | { |
模块标记为ESM
在package.json目录下
- type:‘module’ 使用ECMAScript模块
- type:‘commonjs’ 使用CommonJS模块
预获取
- prefetch
import(/* webpackPrefetch: true */)
- 只要父 chunk 完成加载,webpack 就会添加 prefetch hint(预取提示)
- 在父chunk加载结束后,再开始加载
- 闲置下载
- 未来时刻
预加载
- preload module
- 在父chunk加载的时候,并行加载
- 立即下载
- 立即请求、当下时刻
Webpack构建流程
- 初始化:启动构建,读取并合并配置参数,加载plugin,实例化Complier
- 编译:从Entry出发,针对每个Module串行调用对应的Loader去翻译文件的内容,再找到该Module依赖的Module,递归编译
- 输出:将编译后的Modue组成成Chunk,将Chunk转换成文件,输出到文件系统
文件指纹
- Hash:整个构建项目的hash,文件有修改,整个项目的hash值就会更改
- ChunkHash:Webpack打包的Chunk,不同的entry会生出不同的chunkhash
- contenthash:依据文件内容,文件内容不变,contenthash不变
require.context
- 实现工程自动化(遍历文件夹的文件,从中获取指定文件,自动导入模块)
1 | // 遍历获取 api 目录下所有的 js 文件(包括子目录) |