Webpack的构建流程
Webpack 的构建流程主要包括以下步骤:
初始化:启动构建,读取和合并配置参数,加载 Plugin,实例化 Compiler。
编译:从 Entry 出发,针对每个 Module 串行调用对应的 Loader 去翻译文件的内容,再找到该 Module 依赖的 Module,递归地进行编译处理。
输出:对编译后的 Module 进行深度优化,如模块合并、拆分等,然后将这些信息写入到 Chunk 中,再把 Chunk 转换成文件,输出到文件系统中。
以下是这个过程的伪代码:
// 初始化
const options = readAndMergeConfigOptions();
const compiler = new Compiler(options);// 加载插件
for (const plugin of options.plugins) {plugin.apply(compiler);
}// 编译
const context = { compiler, options };
for (const entry of options.entry) {compileModule(context, entry);
}// 输出
const chunks = generateChunks(context);
for (const chunk of chunks) {emitFile(context, chunk);
}
这个过程中,Webpack 会广播出许多事件,插件可以监听这些事件,在适当的时机添加自己的逻辑。