in packages/core/src/Service.ts [169:198]
public async initPlugin(plugin: BreezrPlugin, args?: CommandArgs) {
const { id, pluginEntry } = plugin;
if (this._pluginStateMap.get(id) === PluginState.INITED) {
return;
}
if (this._pluginStateMap.get(id) === PluginState.INITING) {
error(`can't not circular refer in plugin: ${id}`);
exit(0);
}
this._pluginStateMap.set(id, PluginState.INITING);
// resolve dependencies
try {
const pkg = require(path.join(id, 'package.json'));
const depsPlugins = resolvePluginsFromPkg(pkg);
for (const dep of depsPlugins) {
await this.initPlugin(dep, args);
}
} catch (e) {
// throw e;
}
await pluginEntry(new PluginAPI(id, this), this.loadPluginOptions(id) || {}, args);
this._pluginStateMap.set(id, PluginState.INITED);
}