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

时间:2018-10-11 13:41:22

标签: angular monorepo nrwl

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

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

我是根据我的理解纠正的还是我错过了什么?如果我的假设是正确的,有办法解决吗?

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

它不会影响已编译代码的大小,因为多亏了webpack捆绑和树状摇晃,应用程序仅会包含其使用的代码。因此,对于不使用D3的应用程序,捆绑包中不会出现D3的风险。实际上,您可以在package.json中列出每个npm软件包,并且不会影响包的大小。

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