2

角原理图有一些任务。我想创建自己的任务以使用脚本执行器运行。角度如何做到这一点的一个例子

目前我只是在原理图的末尾生成预定义的任务。

4

2 回答 2

4

我能够注册一个执行者,但它不受支持,因为我使用的是私有字段。这是您需要做的:

const host = <NodeModulesEngineHost>(<any>context.engine)._host; // this line is not supported
host.registerTaskExecutor<YourFactoryOptions>({
  name: "your-executor-name",
  create: (opt) => import('../path/to/executor').then(mod => mod.default(opt))
});

你可以在 Github 上看到如何创建任务执行器注册,然后在这里实际注册

于 2018-10-20T01:54:35.327 回答
0

我想过走这条路,但由于目前不支持添加你自己的任务,我决定只创建一个简单的示意图来包装我想要调用的方法并使用RunSchematicTask. 这解决了我的问题,感觉更安全了,尽管它确实导致了原理图目录中的一些样板/混乱。

例如,这是一个简单的示意图:

export function simpleSchematic(options: any): Rule {
  return async () => {
    await someAsyncMethod(options);
  }
}

这是我在“父”示意图中调用它的方式:

export function parentSchematic(options: any): Rule {
  return chain([
    someRuleCreator(options),
    (_tree: Tree, context: SchematicContext) => {
      context.addTask(new RunSchematicTask('simple-schematic', {})
    }
  ]);
}

请注意,我确实必须将simple-schematic条目添加到collection.json,但我没有在上面的示例中提供。

于 2021-08-17T13:12:59.887 回答