【问题标题】:Nrwl nx command to generate lib for nest modulenrwl nx 命令为嵌套模块生成 lib
【发布时间】:2019-08-19 05:36:09
【问题描述】:

我是 nrwl nx cli 的新手,并且在他们的文档中进行了广泛搜索,但找不到将 nestjs 模块生成为 lib 而不是应用程序中的实际模块的命令。

我想将nestjs模块创建为lib的原因是因为我的mono repo中有几个nestjs应用程序,并且如果我必须共享代码(在我的情况下是模块),则根据nrwl nx指南,它必须成为一个库。

任何人都可以分享执行以下操作的命令吗:-

  1. 在库中生成 nestsjs 模块
  2. 在 libs 文件夹中为该模块创建 nestjs 服务

非常感谢任何帮助。

【问题讨论】:

    标签: nestjs nrwl nrwl-nx


    【解决方案1】:

    我终于得到了完成这项工作的命令,并与其他需要帮助的包共享

    ng generate @nestjs/schematics:library mynestlib
    

    【讨论】:

    • 使用最新版本的 nx,您可以使用“ng g lib my-nest-lib”,系统会提示您输入父文件夹,例如 angular 或 typescript lib。
    • 感谢 Thierry Falvo 的回复,但如果我使用该命令,它将永远不会要求使用nestjs,也不会为nestjs 模块和应用程序搭建脚手架
    • 我不建议直接使用@nestjs/schematics:library,因为它不能正确更新nx.jsonangular.json等。您每次都必须手动完成。如果仍然感兴趣,请点赞此功能:github.com/nrwl/nx/issues/1010
    • 现在可以在 Nx 库中创建包含控制器和服务的 NestJS 库:ng g @nrwl/nest:library my-lib --controller --service。见github.com/nrwl/nx/blob/master/docs/angular/api-nest/schematics/…
    • 也可以安装nx的nest插件nx.dev/angular/plugins/nest/overview
    【解决方案2】:

    来自 Nx Workspace official documentation 的报价:

    创建一个库 将新库添加到 Nx 工作区是通过使用 Angular CLI 生成命令,就像添加新应用一样。

    ng generate lib mylib
    ng generate library mylib # same thing
    

    这将创建一个新的库,并将其放在 libs 目录中,然后 将配置 angular.jsonnx.json 文件以支持 新库。

    运行 ng generate lib --help 以查看可用选项列表。

    ng generate lib mylib --directory=myteam 将在libs/myteam/mylib 中创建一个新应用程序。

    如果--directory没有定义,它会询问你应该在哪个目录生成它,应该使用什么框架(Angular或TS)。

    如果它不起作用,请检查您的 Nx 版本,以及您的 angular.json

    @nrwl/schematics 不能是用作this issue mentioned 的默认集合。

    angular.json

    "cli": {
      "defaultCollection": "@nrwl/schematics",
      "packageManager": "yarn"
    },
    

    【讨论】:

    • 我理解你所说的并检查了你所说的但我说的是当你使用 ng g lib 命令创建库时,它只提供 Angular、React 和 Typescript 框架的选项,但没有对于 NestJS
    • 抱歉,我误解了您要查找的内容。但也许你不应该使用 NestJS 的“生成库”,因为它不会在 angular.json 和所有 tsconfig 文件中添加所需的 Nx 配置。所以用 Nx 生成一个 TS lib 后,就可以用 NestJS 生成模块和服务了。希望对你有帮助。
    • 感谢您的建议,这就是我现在正在做的事情。这有点痛苦,但我想这是唯一的选择,因为使用上面提到的命令不会像你所说的那样更新 nx.json 和 angular.json 文件
    【解决方案3】:

    我最近也遇到了同样的问题。

    虽然@Atul Chaudhary 可以用不同的方式解决问题, 我可以通过this comment解决我的问题

    所以基本上,您只需将一个新的nest-cli.json 文件添加到您的 nx 工作区根文件夹,并根据您的项目结构指定这些基本信息。

    nest-cli.json基本例子

    {
      "collection": "@nestjs/schematics",
      "sourceRoot": "apps/api/src"
    }
    

    希望它可以帮助一些人:)

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2020-07-01
      • 1970-01-01
      • 2018-05-26
      • 2018-08-25
      • 2018-05-11
      • 2020-02-19
      • 2019-10-29
      • 2021-02-01
      相关资源
      最近更新 更多