nrwl / nx工作区专用原理图

时间:2018-07-31 10:02:49

标签: nrwl angular-schematics

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

5 个答案:

答案 0 :(得分:4)

用于原理图的Nx生成器并没有完成您的原理图工作所需的一切。我从下面中学到的是通过遵循this blog post by the Angular Team在另一个目录中创建空白原理图而获得的,我建议遵循以下内容以大致了解原理图。

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

  1. 使用Nx示意图ng g workspace-schematic
  2. 生成示意图
  3. 例如,在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原理图以尝试找到它

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

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

答案 1 :(得分:4)

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

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

使用@ nrwl / schematics:workspace-schematic创建的默认逻辑示意图需要一个'name'参数。您可以为其提供:npm run workspace-schematic <name-schematic> --name my funky name

@ nrwl / nx版本中:“ 6.4.0”

答案 2 :(得分:1)

按照James的5个步骤,我拥有了factory属性来定位已编译的js文件:

{
  "$schema": "../../node_modules/@angular-devkit/schematics/collection-schema.json",
  "name": "sk",
  "version": "0.0.1",
  "extends": ["@nrwl/schematics"],
  "schematics": {
    "data-access-lib": {
      "factory": "../../dist/out-tsc/tools/schematics/data-access-lib",
      "schema": "./data-access-lib/schema.json",
      "description": "Create a Data Access Library"
    }
  }
}

在此之后,它运行完美!

答案 3 :(得分:1)

我知道这篇文章有点老,但是我建议您使用由Nrwl团队开发的Angular Console,它超级方便,并且我已使用它来创建工作区原理图并运行它们。只需打开Angular Console,选择您的工作区,然后:

enter image description here

单击那里,您将获得以下信息:

enter image description here

在创建之后,您可以返回到第一个屏幕的角度,在那里您将看到它:

在命令行中将如下所示:

ng generate @nrwl/schematics:workspace-schematic data-access-lib --no-interactive idf-monorepo

此时,您的工作区中应包含以下内容:

enter image description here

完成实现后,您可以返回角度控制台,您应该会看到类似以下内容:

enter image description here

只需单击它,您将获得以下内容:

enter image description here

根据原理图,您将在此屏幕中当然会获得不同的字段。就我而言,我只有一个定义为属性的名称。

确定在此屏幕中输入所需的信息,然后单击生成,或者如果要手动执行,请执行以下操作:

npm run workspace-schematic -- data-access-lib data-access-common --no-interactive

您还可以从他们的新书中获得有关原理图生成和体系结构的更多详细信息:https://go.nrwl.io/angular-enterprise-monorepo-patterns-new-book

答案 4 :(得分:0)

由于要创建用于生成data-access-lib的工作区示意图,因此命令应为:

ng g data-access-lib <name>

据我所知,它具有name属性,并且应该以{{1​​}}开头

所以最后:

data-access