nrwl - nrwl/nx 工作区特定示意图
问题描述
我一直在研究 nrwl 扩展,它们看起来很棒。但是,当我按照他们的Workspace Specific Schematics教程进行操作时,最后一步并没有显示要运行的命令。你能告诉我如何运行我创建的原理图吗?我确定这很简单,但是我在任何地方都找不到命令。
解决方案
(编辑:有关正确的 Nx 方法,请参阅 Stefan 的答案。如果您想发布原理图,您仍然需要遵循此答案)
用于原理图的 Nx 生成器并不能完成您的原理图工作所需的一切。我在下面学到的知识是通过遵循Angular 团队的这篇博客文章在另一个目录中创建一个空白原理图,我建议遵循这篇文章来总体理解原理图。
以下粗略步骤应该可以帮助您上路:
- 使用 Nx 原理图生成原理图
ng g workspace-schematic
在目录中添加一个
collection.json
文件tools/schematics
,例如{ "$schema": "../../node_modules/@angular-devkit/schematics/collection-schema.json", "name": "myCustomCollection", "version": "0.0.1", "extends": ["@nrwl/schematics"], "schematics": { "data-access-lib": { "factory": "./data-access-lib", "schema": "./data-access-lib/schema.json", "description": "Create a Data Access Library" } } }
请注意该
extends
属性,这意味着您的收藏如果没有特定的原理图,将在失败之前查看 Nx 原理图以尝试找到它schematics
向您添加一个package.json
指向collection.json
文件相对位置的字段(例如"schematics": "./tools/schematics/collection.json"
)- 将您的 Typescript 编译为 Javascript。我制作了一个
package.json
要运行的脚本tsc -p tools/tsconfig.typescript.json
(您应该修改您的 tsconfig 文件以保留已编译的 js) - (可选)修改您
angular.json
的默认指向您的集合。cli > defaultCollection = "."
(@nrwl/schematics
最初是给我的)- 注意:将默认集合设置为“。” 使其仅在根目录中有效。如果您需要在子文件夹中运行您的收藏,您需要像这样运行它
ng g ../..:data-access-lib
- 注意:将默认集合设置为“。” 使其仅在根目录中有效。如果您需要在子文件夹中运行您的收藏,您需要像这样运行它
- 运行您的原理图
ng g data-access-lib
(如果您完成了第 5 步)或ng g .:data-access-lib
Nx 原理图生成器似乎有一些重大差距,但希望这能帮助您重回正轨。