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

问题描述 投票:0回答:1

Angular Workspace允许我使用将多个项目添加到mono-repo中,这很棒。但是,与几个团队一起工作时,我注意到,如果您只有一个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,因为它允许团队独立地更新其依赖关系。那可能吗?

angular angular6 angular7 angular8 angular9
1个回答
2
投票

我认为答案是“是和不是”。只要您希望使用一个应用程序(一个版本,一个工件),答案是否定的。

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

每个Lib都有自己的package.json。但是在执行此步骤之前,我认为您应该分析您的依赖关系结构(和业务用例),以确保将来的库的代码不依赖于其外部的内容。

您可能有一种依赖关系树(主应用程序使用Lib-A和Lib-B,Lib-A和Lib-B使用Lib-C,...),但您应检查是否没有循环依赖关系,并且“ lower” lib永远不要依赖于“ higher” lib。

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

所以,可以有多个package.jsons。但它就像有多个小型项目。具有所有优点和缺点。

© www.soinside.com 2019 - 2024. All rights reserved.