在 Nrwl/Nx 工作区中包含一些库的包

Include a package for some libs in Nrwl/Nx workspace

似乎在 Nrwl/Nx 工作区中只有一个 package.json 文件。现在,如果我们有多个应用程序,每个应用程序都依赖于不同的包,那么我们必须将所有这些包包含在单个 package.json 文件中,这不会增加所有应用程序在构建时的大小吗? (推测 vendor.js 文件)。

例如,如果 app-1 依赖于 d3 而 app-2 依赖于 ag-grid 库,那么这两个库是否会不必要地包含在 app-1 和 app-2 中?当app-1的用户访问应用时,ag-grid不需要为他们加载。

我的理解正确还是我遗漏了什么?如果我的假设是正确的,有没有办法解决这个问题?

懒加载库怎么样?例如,仅对某些用户(具有管理员角色)可用的 "admin" 库可能需要某些图形包,而不必为所有用户加载这些包。

谢谢。

使用 nrwl/nx 的好处之一是单个 package.json 文件。使用单个 package.json 非常好,因为当你需要升级像 rxjs 这样的东西时,你只需要做一次并且你的整个代码库都在同一组依赖项上 运行。

它不会影响编译代码的大小,因为应用程序将只包含它使用的代码,这要归功于 webpack 捆绑和 tree shaking。因此,不存在 D3 出现在未使用它的应用程序的捆绑包中的风险。实际上,您可以在 package.json 中列出每个 npm 包,这不会影响您的包大小。

nrwl/nx 100% 打算只使用一个 package.json 文件。如果你正在使用 nx,请不要试图分解它。