首页 > 解决方案 > Nrwl Nx:将库合并到可发布的库中

问题描述

我有一个 Nx 工作区,想构建两个 npm 包:一个用于 React,一个用于 Angular。两者都使用一些共享代码。

结构是这样的:

如果我使核心库可发布并希望将 angular-lib 发布到 npm,我还需要发布核心包,这是我不想要的。

如果核心不可发布,我会得到文件 xxx.ts 不在“rootDir”下

有谁知道是否可以使用包含的数据库的使用代码创建一个 angular-lib 包?

这里的代码

标签: angularnrwl-nxnrwl

解决方案


也许git submodules是你真正需要的。

因此,如果您不想推动“核心”,但希望该模块可在 react-lib 和 angular-lib 之间重用。您只需将 'core' 的 repo 作为子模块连接到 'react-lib' 和 'angular-lib' 的 repos 并具有如下文件结构

核心 - 有自己的 git 仓库

angular-lib - 有自己的 git repo 和“核心作为子模块”。

./src

./core - git 子模块

react-lib - 有自己的 git repo 和“核心作为子模块”

./src

./core - git 子模块

您可以使用单个命令“”更新整个 angular-lib,包括子目录“core git pull --recursive

从 angular 和 react 的角度来看,“core”只是一个子目录,您可以从那里导入源文件等。“ ng build”将包含所有必要的内容到生成的包中。因此,来自“核心”的代码可以从 git 重用和更新,无需为此发布 npm 包。

或者 - 方法 #2 - 只需使用符号链接。在“angular-lib”和“react-lib”目录中创建指向“core”目录的符号链接。并从 ./core 导入源代码。'ng build' 将创建正确的包 - 它将包括文件副本,没有 symlynks。


推荐阅读