7

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

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

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

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

谢谢你。

4

1 回答 1

8

使用 nrwl/nx 的好处之一是单个 package.json 文件。使用单个 package.json 非常棒,因为当您需要升级 rxjs 之类的东西时,您只需执行一次,整个代码库就会运行在同一组依赖项上。

它不会影响已编译代码的大小,因为由于 webpack 捆绑和树抖动,应用程序只会包含它使用的代码。因此,对于不使用它的应用程序,D3 不会出现在捆绑包中。实际上,您可以在 package.json 中列出每个 npm 包,这不会影响您的包大小。

nrwl/nx 100% 打算只使用一个 package.json 文件。如果您使用的是 nx,请不要尝试将其分解。

于 2018-10-11T13:59:12.280 回答