Angular/CLI 6.x 中的自定义原理图构建没有错误,但我无法使用它来生成文件
Custom schematics in Angular/CLI 6.x builds without errors but I cannot use it to generate files
在 Angular 6.0 之前,我已经创建了一些原理图。我在 Angular 5.x 中执行的相同步骤现在总是在我尝试在托管应用程序(Angular 6)上生成一些代码时导致错误 schematic 'my-schematic' not found in collection @schematics/angular
?。
我的设置(全局 Angular 内容):
Angular CLI: 6.0.0
Node: 8.11.1
OS: win32 x64
@angular-devkit/{architect, core, schematics} 0.6.0
@schematics/angular 0.6.0
rxjs 6.1.0
typescript 2.7.2
我的步数:
- 运行
schematics schematic --name=my-first-schematics
。因此它创建了一个新的原理图项目,其中包含三个示例架构。然后我导航到那个新文件夹 cd my-first-schematics
.
- 运行
npm run build
。它构建没有错误。
- 运行
schematics .:my-first-schematics
。结果:错误 "my-first-schematics" not found in collection "."
我在一些博客中看到他们执行此步骤没有问题。我从来没有用过 运行 这个命令,我不确定它到底做了什么,所以我会继续假设这个命令毕竟不是必需的。
- 运行
npm link
以便我可以在新项目中使用这个新原理图 collection。
- 在另一个提示 window 中,我创建了一个新应用程序:
ng new schematics-consumer
,然后在 npm 安装后,cd schematics-consumer
。
- 运行
npm link my-first-schematics
所以我现在可以访问该原理图库了。
- 我导航到
src/app
,因为这是我要生成文件的地方。
- 运行
ng g my-schematic -c my-first-schematics
。导致错误 Schematic "my-schematic" not found in collection "@schematics/angular"
。我指定了 collection。为什么它没有看到我的新 collection,它仍然认为每个原理图都在 @schematics/angular
中?
所以,我不能用原理图生成任何东西。我没有修改 schematics schematic name=my-first-schematics
.
生成的默认代码中的任何内容
是否有一套新的命令、程序等来创建我们自己的自定义原理图?我缺少哪些步骤?我还需要安装什么?如有必要,我会提供更多信息。
目前,没有关于原理图的新指南或博客,因为 6.0 才推出几周,所以我假设旧方法应该仍然有效。
看来问题最终出在 angular-cli
,请参阅讨论:https://github.com/angular/devkit/issues/528#issuecomment-387415646
要解决这个问题,您可以将默认集合设置为您的自定义示意图:
ng config cli.defaultCollection my-first-schematics
现在您应该可以 运行 ng g my-schematic
.
如果这不起作用,您可以 post 您的 my-first-schematics
目录的文件列表吗?
在 Angular 6.0 之前,我已经创建了一些原理图。我在 Angular 5.x 中执行的相同步骤现在总是在我尝试在托管应用程序(Angular 6)上生成一些代码时导致错误 schematic 'my-schematic' not found in collection @schematics/angular
?。
我的设置(全局 Angular 内容):
Angular CLI: 6.0.0
Node: 8.11.1
OS: win32 x64
@angular-devkit/{architect, core, schematics} 0.6.0
@schematics/angular 0.6.0
rxjs 6.1.0
typescript 2.7.2
我的步数:
- 运行
schematics schematic --name=my-first-schematics
。因此它创建了一个新的原理图项目,其中包含三个示例架构。然后我导航到那个新文件夹cd my-first-schematics
. - 运行
npm run build
。它构建没有错误。 - 运行
schematics .:my-first-schematics
。结果:错误"my-first-schematics" not found in collection "."
我在一些博客中看到他们执行此步骤没有问题。我从来没有用过 运行 这个命令,我不确定它到底做了什么,所以我会继续假设这个命令毕竟不是必需的。 - 运行
npm link
以便我可以在新项目中使用这个新原理图 collection。 - 在另一个提示 window 中,我创建了一个新应用程序:
ng new schematics-consumer
,然后在 npm 安装后,cd schematics-consumer
。 - 运行
npm link my-first-schematics
所以我现在可以访问该原理图库了。 - 我导航到
src/app
,因为这是我要生成文件的地方。 - 运行
ng g my-schematic -c my-first-schematics
。导致错误Schematic "my-schematic" not found in collection "@schematics/angular"
。我指定了 collection。为什么它没有看到我的新 collection,它仍然认为每个原理图都在@schematics/angular
中?
所以,我不能用原理图生成任何东西。我没有修改 schematics schematic name=my-first-schematics
.
是否有一套新的命令、程序等来创建我们自己的自定义原理图?我缺少哪些步骤?我还需要安装什么?如有必要,我会提供更多信息。
目前,没有关于原理图的新指南或博客,因为 6.0 才推出几周,所以我假设旧方法应该仍然有效。
看来问题最终出在 angular-cli
,请参阅讨论:https://github.com/angular/devkit/issues/528#issuecomment-387415646
要解决这个问题,您可以将默认集合设置为您的自定义示意图:
ng config cli.defaultCollection my-first-schematics
现在您应该可以 运行 ng g my-schematic
.
如果这不起作用,您可以 post 您的 my-first-schematics
目录的文件列表吗?