Angular 工作区 - 我可以在多个 package.json 中分离依赖项吗?

Angular workspace - Can I seperate dependencies in multiple package.json?

Angular 工作区允许我使用将多个项目添加到单一存储库中,这很棒。但是,在与多个团队合作时,我注意到如果您只有一个 package.json 并让每个团队使用他们正在编写的应用程序对其进行编辑,它会变得非常混乱。

是否可以有这样的结构?

|── angular.json
├── browserslist
├── e2e
├── karma.conf.js
├── node_modules
├── package.json <--- I should only be responsible for everything in /src
├── package-lock.json
├── projects
│   └── my-sub-application
│       ├── browserslist
│       ├── karma.conf.js
│       ├── package.json <--- Is this possible? So that "my-sub-application" only pulls its dependencies from this package.json?
│       ├── src
│       │   ├── app
│       │   ├── assets
│       │   ├── environments
│       │   ├── favicon.ico
│       │   ├── index.html
│       │   ├── main.ts
│       │   ├── polyfills.ts
│       │   ├── styles.scss
│       │   └── test.ts
│       ├── tsconfig.app.json
│       ├── tsconfig.spec.json
│       └── tslint.json
├── README.md
├── src
│   ├── app
│   ├── assets
│   ├── environments
│   ├── favicon.ico
│   ├── index.html
│   ├── main.ts
│   ├── polyfills.ts
│   ├── styles.scss
│   └── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── tslint.json

想法是为每个子应用程序设置一个 package.json,因为它允许团队独立更新它们的依赖项。那可能吗?

我认为答案是"yes and no"。
只要您想继续使用一个应用程序(一个构建,一个工件),那么答案是否定的。

但是,如果您的团队正在处理不同的、独立的功能,则可能值得考虑创建多个库 (https://angular.io/guide/creating-libraries)。

每个库都有自己的 package.json。但在你执行这一步之前,我认为你应该分析你的依赖结构(和业务用例),以确保未来库的代码不依赖于它之外的东西。

你可以有一种依赖树(主应用程序使用 Lib-A 和 Lib-B,Lib-A 和 Lib-B 使用 Lib-C,...)但是你应该检查没有循环依赖,并且 "lower" 库不应该依赖于 "higher" 库。

使用库的方法对开发过程有重大影响。不同的构建过程,更加分割/分离的代码库,它可能会以多种方式影响代码设计,...
所以这不是一个小的变化。但它也给了你很多优点。
因此,一个库可以获得新版本,而应用程序的其他部分仍将使用旧版本,直到这些团队准备好进行升级。库的分离使整个应用程序不易损坏,因为库只会通过定义的接口相互通信。 ...

所以是的,您可以有多个 package.json。但这就像拥有多个小项目一样。具有所有优点和缺点。