【发布时间】:2018-11-02 11:55:05
【问题描述】:
我正在创建一些自定义原理图,以帮助我们快速启动 Angular 库项目。鉴于此,我不希望开发人员必须有一个ng ... 命令清单,他们必须运行以启动和运行库,我只想有一个设置工作区的命令,放置一个在其中的库,进行一些自定义(以开玩笑的方式交换业力,添加一些 CI 配置等)。
我这样做的方法是创建一个以空树开头的原理图,然后从@schematics/angular 调用ng-new 原理图,通过externalSchematic() 然后链接来自同一包的library 原理图,然后是用于进行自定义的自定义示意图的数量。
我想要使用externalSchematic() 而不是将所有外部原理图的代码复制到我的原理图项目中的原因是,当@schematics/angular 更新时,我可以通过执行yarn upgrade-interactive 来合并这些更新并找到并通过运行测试套件解决任何问题。最终,我们可以使用 CI 将其自动化。
我在这里创建了一个小型的自包含示例来重现我的错误:https://github.com/matt328/ng-schematics-test
重现步骤:
git clone
npm install
npm run build
schematics ng-schematics-test:my-full-schematic --name=test-schematic
当我运行原理图时,它会报告Invalid source: undefined.
这里
https://github.com/matt328/ng-schematics-test/blob/master/src/my-full-schematic/index.ts#L30
是我使用externalSchematic() 调用ng-new 的地方。
我对源代码进行了一些挖掘,发现它是由一些角度示意图引起的
"$default": {
"$source": "projectName"
}
在他们的模式中。该错误是由于 projectName 未定义造成的。
还需要做什么才能使用externalSchema() 调用ng-new?这种方法有效吗,还是有其他方法可以做到这一点?
【问题讨论】:
标签: angular angular-schematics