nrwl / nx工作区专用原理图

Ste*_*eve 4 angular-schematics nrwl

我一直在研究nrwl扩展,它们看起来很棒。但是,当我按照他们的Workspace Specific Sc​​hematics教程学习时,最后一步不会向我显示要运行的命令。您能告诉我如何运行创建的原理图吗?我敢肯定这很简单,但是我在任何地方都找不到该命令。

jam*_*ell 6

(编辑:有关正确的Nx方式,请参见Stefan的答案。如果要发布原理图,则仍然需要遵循此答案)

原理图的Nx生成器并没有完成您的原理图工作所需的一切。我从下面中学到的是在Angular Team的这篇博客文章之后,在另一个目录中创建空白原理图,我建议您总体上理解Schematics。

以下粗略步骤应有助于您上路:

  1. 使用Nx原理图生成原理图 ng g workspace-schematic
  2. 例如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"
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    注意该extends属性,这意味着您的集合(如果没有特定的原理图)将在失败之前使用Nx原理图尝试查找它

  3. schematics在您的字段中添加一个package.json指向collection.json文件相对位置的字段(例如"schematics": "./tools/schematics/collection.json"
  4. 将您的Typescript编译为Javascript。我制作了一个package.json脚本来运行tsc -p tools/tsconfig.typescript.json(您应该修改tsconfig文件以将已编译的js保留在原位)
  5. (可选)angular.json默认情况下,将您修改为指向您的收藏集。cli > defaultCollection = "."@nrwl/schematics最初是我的)
    • 注意:将默认集合设置为“。” 使其仅在根目录下工作。如果您需要在子目录中运行您的收藏集,则需要像ng g ../..:data-access-lib
  6. 使用ng g data-access-lib(如果您已完成步骤5)运行原理图,或ng g .:data-access-lib

Nx原理图生成器似乎有一些主要的差距,但是希望这将帮助您回到正轨。


Ste*_*ren 5

您可以使用以下命令在NX工作区中添加自定义集合: ng generate @nrwl/schematics:workspace-schematic <name-schematic>

然后,您可以使用来运行该原理图npm run workspace-schematic <name-schematic>

使用@ nrwl / schematics:workspace-schematic创建的默认原理图需要一个“名称”参数。您可以为其提供:npm run workspace-schematic <name-schematic> --name my funky name

在版本@ nrwl / nx中:“ 6.4.0”