angular.json

// https://segmentfault.com/a/1190000016292354
// https://angular.cn/guide/workspace-config
{
  // 注解和验证JSON数据格式的工具
  // 比如可以自动填充属性或属性值
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  // 用来创建析工程的位置。绝对路径或相对于工作区目录的路径
  // 使用 ng generate application myDemo, 就会在 angular-dave/projects 目录下生成 myDemo 项目
  "newProjectRoot": "projects",
  // 这个属性包含了工作空间中所有项目的配置信息
  // 如果如上生成 myDemo, 那么在这里还有与 angular-dave 同一层级的 myDemo 的配置
  "projects": {
    "angular-dave": {
      // 该属性有 application 和 library 两种选择
      "projectType": "application",
      "schematics": {
        // 在项目级别统一进行配置
        // 比如在这里,配置了所有的 component 都使用 scss
        // 可试着查看其它的配置项,因为有 $schema, 会帮你自动补全相关属性
        "@schematics/angular:component": {
          "style": "scss"
        }
      },
      // 指定了项目文件的根文件夹,可能为空,但是它指定了一个特定的文件夹
      // 如果如上生成 myDemo, 那么 myDemo 的如下几个属性值路径会有所不同
      "root": "",
      "sourceRoot": "src",
      // 当CLI创建 `component`或者`directive`时,使用该属性 来区别他们
      "prefix": "app",
      // 为本项目的各个构建器目标配置默认值
      "architect": {
        // 为 ng build 命令的选项配置默认值
        "build": {
          // 每个目标对象都指定了该目标的 builder,它是 architect (建筑师)所运行工具的 npm 包
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/angular-dave",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "aot": false,
            // 包含一些用于添加到项目的全局上下文中的静态文件路径
            // 每个 build 目标配置都可以包含一个 assets 数组,它列出了当你构建项目时要复制的文件或文件夹。
            // 默认情况下,会复制 src/assets/ 文件夹和 src/favicon.ico
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            // 包含一些要添加到项目全局上下文中的样式文件(即全局样式)
            "styles": [
              "src/styles.scss"
            ],
            // 包含一些 JavaScript 脚本文件,用于添加到项目的全局上下文中。
            // 这些脚本的加载方式和在 index.html 的 <script> 标签中添加是完全一样的。
            "scripts": []
          },
          // configurations 部分可以为目标命名并指定备用配置
          "configurations": {
            // you can use that configuration by specifying the --configuration="production" or the --prod="true" option.
            // ng build --prod=true|false   
            // Shorthand for "--configuration=production".
            // When true, sets the build configuration to the production target.
            // By default, the production target is set up in the workspace configuration such that all builds make use of bundling, limited tree-shaking, and also limited dead code elimination.
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts"
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              // 全部或部分应用的默认尺寸预算的类型和阈值。
              // 当构建的输出达到或超过阈值大小时,你可以将构建器配置为报告警告或错误
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "5mb"
                },
                {
                  "type": "anyComponentStyle",
                  "maximumWarning": "6kb",
                  "maximumError": "10kb"
                }
              ]
            }
          }
        },
        // 覆盖构建默认值,并为 ng serve 命令提供额外的服务器默认值
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "angular-dave:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "angular-dave:build:production"
            }
          }
        },
        // 为 ng xi18n 命令所用到的 ng-xi18n 工具选项配置了默认值
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "angular-dave:build"
          }
        },
        // 覆盖测试时的构建选项默认值,并为 ng test 命令提供额外的默认值以供运行测试
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.spec.json",
            "karmaConfig": "karma.conf.js",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          }
        },
        // 为 ng lint 命令配置了默认值,用于对项目源文件进行代码分析
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "tsconfig.app.json",
              "tsconfig.spec.json",
              "e2e/tsconfig.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        },
        // 覆盖了构建选项默认值,以便用 ng e2e 命令构建端到端测试应用
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "angular-dave:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "angular-dave:serve:production"
            }
          }
        }
      }
    }
  },
  "defaultProject": "angular-dave"
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260