如何在一个工作区内将库中的库发布到 NPM (singlerepo) nx nrwl

How to publish a library inside library to NPM within one workspace (singlerepo) nx nrwl

我有一个工作区,其中包括 apps/sandbox 文件夹中的一个应用程序和 libs 文件夹中的两个库。

我有这两个库:
@workspace/library library and @angular/nrwl to NPM

  1. libs/ui
  2. libs/cdk-ui

我需要将 ui 库发布到 NPM,但它使用 cdk-ui,我只想发布一个而不是两个库作为 NPM 部门。

如何实现? 我希望在我输入 'npm install @ccc/ui' 后,两个库都能像往常一样工作,而无需任何单独的发布。

如果需要任何额外的解释,请告诉。

更新: 我在这方面遇到过: https://github.com/nrwl/nx/issues/225#issuecomment-373668866

但是缺乏关于如何做的很好的解释。 真的有人做过吗?

您可以通过在您的 UI 库的 package.json 上编写自定义脚本来扩展您的 npm 发布命令,该脚本运行 cdk/ui 库 build你的 ui build 命令然后复制你的 build 库,第一个里面有“cpx”。

为了实现它们最终位于同一位置和目录中,您必须更改“cdk/ui”的 tsconfig.lib.json:特别是 cdk/ui 的 outDir(应该与另一个匹配)

所以基本上在你的 UI 的 package.json 你有这样的东西:

{
    "build-library": "ng build ui  && npm run build-cdk-ui",
    "publish": "npm run build-library && npm run publish-dist",
    "build-cdk-ui": "tsc -p yourFolderForCDK-ui/tsconfig.lib.json && cpx your-resulted-dist dist/the-dist-you-want-to-put"
}

为 UI 触发 ng build(创建一个 dist 文件夹),然后你执行 ng build cdk/ui,这将该 dist 在其他带有 cpx 库的 dist 文件夹中,您应该安装然后发布该文件夹。