Angular 工作区是 Angular project 的汇合。Angular project 蕴含 application 和 library 两种。
而用来创立或操作利用和库的命令(比方 add 和 generate)必须在工作区目录下能力执行。
ng new <my-project>
上述命令行实际上创立的是一个新的工作区。
当你运行这个命令时,CLI 会在一个新的工作区中装置必须的 Angular npm 包和其它依赖项,其根利用 (root leavl application) 名叫 my-project。该工作区的根文件夹中蕴含一些工作区配置文件,和一个带有主动生成的描述性文本的自述文件,你能够自定义它。
ng new 还会默认创立一个位于工作区根级的骨架利用,及其端到端测试项目。这个骨架是一个简略的 Welcome 利用,它能够运行,也很容易批改。这个根利用与工作区同名,其源文件位于工作区的 src/ 子文件夹中。
这种默认行为实用于典型的“多重(multi)repo”开发格调,每个利用都位于它本人的工作区中。倡议初学者和中级用户应用 ng new 为每个利用创立一个独自的工作区。
如下图所示:工作区和根利用的名称雷同:
Angular 还反对蕴含多个我的项目的工作区。这种开发环境实用于正在开发可共享库的高级用户,以及那些应用“繁多(mono)仓库”开发格调的企业,它只须要一个仓库,而且所有 Angular 我的项目都应用全局配置。
SAP Spartacus 就采取的该种格调。
要设置繁多仓库的工作区,你应该跳过创立根利用的过程。
多我的项目工作区实用于对所有 Angular 我的项目应用繁多存储库(单仓库模型)和全局配置的企业。多我的项目工作区也能为库开发提供反对。
运行命令行:
ng new angular-monorepo –create-application false
创立好之后的我的项目构造如下图所示:
angular.json 里很洁净:
而后,你能够应用工作区内惟一的名字来生成利用和库:
ng generate application jerry-first-app
增加了新的利用之后,咱们的 Angular 工作区,到底产生了哪些变动?
查看这个 commit 即可。
首先是 angular.json, 在 projects 节点下,削减了一个新的以 app 名称命名的节点,projectType 为 application:
以及对应的 architect:
package.json
因为多了一个 Angular 利用,咱们须要 angular-devkit/build-angular 对我的项目进行构建:
工作区中第一个显式生成的利用会像工作区中的其它我的项目一样放在 projects/ 文件夹中。新生成的库也会增加到 projects/ 下。当你以这种形式创立我的项目时,工作区的文件构造与工作区配置文件 angular.json 中的构造完全一致。
从下图能看出,右边 projects/jerry-first-app 和左边 angular.json 里的层级构造统一。
上面咱们创立一个库:
ng generate library my-lib
angular.json 文件在 projects 节点下,多了一个 my-lib 节点,其 projectType 类型为 library:
angular.json 里的层级构造和文件系统的目录同样是统一的:
这个库有属于本人独自的 package.json:
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: