前提介绍
上一节分析了compiler的构建,我们分析出compiler只是一个状态机,其编译功能都由插件完成。我在看了几个关键插件的代码后,还是决定先来写一下compiler.run方法。compiler.run推动了compiler状态机的状态流转,带动插件参与到编译过程,我们可以借此先看一下整体的流程。
run函数
精简后的代码如下
run(callback) {
.......
const finalCallback = (err, stats) => {
......};
const onCompiled = () => {
......}
this.hooks.beforeRun.callAsync(this, err => {
if (err) return finalCallback(err);
this.hooks.run.callAsync(this, err => {
if (err) return finalCallback(err);
this.readRecords(err => {
if (err) return finalCallback(err);
this.compile(onCompiled);
});
});
});