A file named angular.json at the root level of an Angular workspace provides workspace-wide and project-specific configuration defaults for build and development tools provided by the Angular CLI. Path values given in the configuration are relative to the root workspace folder.

defaultProject: Default project name to use in commands, where not provided as an argument. When you use ng new to create a new app in a new workspace, that app is the default project for the workspace until you change it here.

projects：对于工作区中的每个项目（库、应用、e2e 测试）都会包含一个子分区，子分区中是每个项目的配置项。

projects : Contains a subsection for each project (library, app, e2e test app) in the workspace, with the per-project configuration options.

你通过 ng new app_name 命令创建的初始应用及其对应的端到端测试应用都会列在 projects 下：

The initial app that you create with ng new app_name is listed under "projects", along with its corresponding end-to-end test app:

Each additional app that you create with ng generate application has a corresponding end-to-end test project, with its own configuration section. When you create a library project with ng generate library, the library project is also added to the projects section.

请注意，配置文件的 projects 节与工作区的文件结构并不完全对应。

Note that the projects section of the configuration file does not correspond exactly to the workspace file structure.

ng new 创建的这个初始应用和它的 e2e 应用一起位于工作区文件结构的顶层。

The initial app created by ng new is at the top level of the workspace file structure, along with its e2e app.

其它应用、e2e应用和库位于工作区的 projects 文件夹中。

Additional apps, e2e apps, and libraries go into a projects folder in the workspace.

Architect is the tool that the CLI uses to perform complex tasks such as compilation and test running, according to provided configurations. The architect section contains a set of Architect targets. Many of the targets correspond to the CLI commands that run them. Some additional predefined targets can be run using the ng run command, and you can define your own targets.

Each target object specifies the builder for that target, which is the npm package for the tool that Architect runs. In addition, each target has an options section that configure default options for the target, and a configurations section that names and specifies alternative configurations for the target. See the example in Build target below.

The architect/serve section overrides build defaults and supplies additional serve defaults for the ng serve command. In addition to the options available for the ng build command, it adds options related to serving the app.

architect/e2e 节覆盖了构建选项默认值，以便用 ng e2e 命令构建端到端测试应用。

The architect/e2e section overrides build-option defaults for building end-to-end testing apps using the ng e2e command.

The architect/extract-i18n section configures defaults for options of the ng-xi18n tool used by the ng xi18n command, which extracts marked message strings from source code and outputs translation files.

In general, the options for which you can configure defaults correspond to the command options listed in the CLI reference page for each command. Note that all options in the configuration file must use camelCase, rather than dash-case.

This section defines and names alternative configurations for different intended destinations. It contains a section for each named configuration, which sets the default options for that intended environment. See Alternate build configurations below.

By default, a production configuration is defined, and the ng build command has --prod option that builds using this configuration. The production configuration sets defaults that optimize the app in a number of ways, such bundling files, minimizing excess whitespace, removing comments and dead code, and rewriting code to use short, cryptic names ("minification").

You can define and name additional alternate configurations (such as stage, for instance) appropriate to your development process. Some examples of different build configurations are stable, archive and next used by AIO itself, and the individual locale-specific configurations required for building localized versions of an app. For details, see Internationalization (i18n).

The configurable options for a default or targeted build generally correspond to the options available for the ng build, ng serve, and ng testcommands. For details of those options and their possible values, see the CLI Reference.

Default size-budget type and threshholds for all or parts of your app. You can configure the builder to report a warning or an error when the output reaches or exceeds a threshold size. See Configure size budgets. (Not available in test section.)