亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

簡單說說angular.json文件的使用

2019-11-19 12:37:13
字體:
來源:轉載
供稿:網友

Angular CLI 6+的版本后,原先的angular-cli.json就被換成了angular.json,而其中里面的字段變化挺大了,如果不了解基本的組成,或者直接把老版本的代碼 copy 到新版本的工作空間中,會導致一些很不友好的錯誤。

這種變化主要還是因為Angular CLI引入了 monorepo (一個空間管理多個項目) 的開發模式,即使用ng new出來的相當于一個大的工作空間,通過angular.json配置來管理各種ng generate application | library出來的項目或組件庫。

其實這種模式優勢還是很明顯的,比如一個公司有多種管理平臺或者產品時,使用這種方式可以統一各個項目的環境,各個項目間共用的組件也被統一維護起來,所有項目共用npm包以及typescript配置。

monorepo下結構如:

但是其實大多數人還是一個工作空間維護一個項目,所以這個在這里不那么重要,只是想說json文件的改變是為了新的模式而已。

Angular.json的部分字段

當你ng new一個工作空間時,默認會在根目錄創建一個項目以及對應e2e項目。初始的angular.json結構如下(省略的部分的配置代碼)

{  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",  "version": 1,  "newProjectRoot": "projects",  "projects": {    "xxxx": {      "root": "",      "sourceRoot": "src",      "projectType": "application",      "prefix": "app",      "schematics": {},      "architect": {}    }  },  "defaultProject": "xxxx"}

這是部分的配置屬性,我按照順序簡單做個記錄,以后也好查閱。

$schema

指向一個 JSON Schema 文件,這個文件描述了angular.json所有的字段以及約束。

其實可以比作一個有“類型提示”功能文件,只要支持了這個功能的 IDE 或編輯器,在書寫angular.json文件時便會給出相應的提示。

version

設置版本

newProjectRoot

新建項目所在的路徑。

當使用ng generate application | library創建一個新的項目時,會自動裝配到設定的newProjectRoot目錄下

projects

放置所有項目的配置。其中一個項目為一個子項,如xxxx為一個項目,在創建時自動生成。

{  "projects": {    "xxxx": {      "root": "",      "sourceRoot": "src",      "projectType": "application",      "prefix": "app",      "schematics": {},      "architect": {}    }  }}

在一個單獨的配置中,可以通過靈活的配置實現一些自動化操作還有使用CLI內置的一些指令。

root

代表項目的“根目錄”,也就是項目所在的位置,或者說項目源碼的父級目錄。項目的根目錄包含了一些特定的配置。

sourceRoot

項目源碼所在的目錄,通常默認使用src目錄。

projectType

標示這個項目是application還是library

prefix

使用ng generate component | directive生成組件或者指令時默認的selector前綴,通常我們使用命令創建的組件或指令都是app-xxx格式,我們可以手動在這里改動,使整個項目生效。

schematics

CLI中生成組件、指令、模塊等文件的指令是使用@angular-devkit/schematics實現的,這些指令通常帶有一些快捷配置,比如一個生成組件的命令:ng g c --spec=false --styleext=scss,這條命令可以直接生成一個 不帶測試文件、使用scss為樣式文件 的組件。如果每次都要手動輸入這些配置就會顯得麻煩,所以angular.json提供了schematics屬性來統一設置一些生成類的命令配置。

這里的schematics是針對單個project來的。整個angular.json也有此字段,默認生效于所有project。

CLI預設了幾組選項,我們可以針對不同的選項進行配置:

  • @schematics/angular:component
  • @schematics/angular:class
  • @schematics/angular:directive
  • @schematics/angular:guard
  • @schematics/angular:module
  • @schematics/angular:pipe
  • @schematics/angular:service

component舉例,如果要實現統一ng g c --spec=false --styleext=scss的效果,可以配置如下:

{  "schematics": {    "@schematics/angular:component": {       "styleext": "less",       "spec": false    }  }}

接著就可以直接使用ng g c直接生成對應的組件了。

architect

包含幾組CLI相關的項目自動化命令配置,比如本地運行、編譯、測試等等。默認預設了幾組命令配置如build、serve等等:

{  "architect":{    "build":{},    "serve":{},    "extract-i18n":{},    "test":{},    "lint":{}  }}

配置屬性

每一個配置項都有 3 個字段屬性:builder,options,configurations,例如默認的build命令配置:

{  "architect": {    "build": {      "builder": "@angular-devkit/build-angular:browser",      "options": {        "outputPath": "dist/testApp",        "index": "src/index.html",        "main": "src/main.ts",        "polyfills": "src/polyfills.ts",        "tsConfig": "src/tsconfig.app.json",        "assets": [          "src/favicon.ico",          "src/assets"        ],        "styles": [          "src/styles.css"        ],        "scripts": []       },       "configurations": {         "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         }       }     }   }}

這個是項目默認生成的配置。

builder代表要執行的內置程序,因為CLI內置了一些自動化工具,architect只是提供了一個facade模式(通俗地講,就是開發者不需要知道內部的復雜實現)給開發者配置使用,本質上還是調用的內置工具。

options代表針對當前builder要配置的配置項,調用不同的內置程序,是需要傳對應的配置項的,由于配置項很多,這里也不會列出。

configurations代表這個命令的多種調用模式,在此配置里,我們可以定義不同的別名,然后使用不同的配置(配置的字段還是屬于options里的),最后在使用命令時便可以手動選擇不同的模式。

如何使用

CLI其實內置了幾個快捷命令來對應默認生成的配置如ng serve、ng build等等,如果是我們額外自定義的配置,則可以使用ng run <project>:<architect>[:configurations] [其他配置]
命令來實現,其中projectarchitect為必填,configurations為選填。

比如我們簡單額外自定義一個本地運行的服務器命令:

{  "architect":{    "myServe":{      "builder": "@angular-devkit/build-angular:dev-server",      "options": {        "browserTarget": "xxxx:build",        "port": 8800      },      "configurations": {        "port1": {          "port": 8801        },        "port2": {          "port": 880        }      }    }  }}

配置使用了內置的運行本地服務器程序,然后使用默認的build配置,加上自定義的運行端口,另外加上兩個不同模式,運行不同端口。

使用ng run xxxx:myServe可以正常運行本地服務器跑項目,端口是8800
使用ng run xxxx:myServe:port1端口是8801

當然,我們還可以直接使用額外的命令行配置直接覆蓋已經定義的配置:
ng run xxxx:myServe:port1 --port=8808

這里的例子只是為了簡單了解下architect的用法。

defaultProject

默認項目,當使用一些CLI命令沒有指定項目名稱時,默認指向的項目。

schema.json

其實我只是為了記錄自己有點印象的屬性,整個angular.json還有很多其他的字段,如果想要全面了解,我們可以直接打開$schema所指向的文件,里面詳細地展示了各種字段的類型、配置以及描述說明。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成毛片在线播放| 日韩欧美精品中文字幕| 性金发美女69hd大尺寸| 国产中文欧美精品| 91精品国产一区| 日韩一二三在线视频播| 午夜精品一区二区三区视频免费看| 国产精品一区二区三区毛片淫片| 国产精品扒开腿做爽爽爽的视频| 国产精品久久久久久av福利| 欧美国产视频日韩| www高清在线视频日韩欧美| 92看片淫黄大片看国产片| 日本久久久久亚洲中字幕| 久久全国免费视频| 亚洲va久久久噜噜噜久久天堂| 国产一区二区香蕉| 日本不卡免费高清视频| 日韩欧美成人区| 正在播放亚洲1区| 97国产suv精品一区二区62| 久久久久久综合网天天| 在线视频欧美日韩精品| 国内外成人免费激情在线视频网站| 亚洲乱码一区av黑人高潮| 欧美成人三级视频网站| 亚洲国产精品系列| 国产精品中文字幕久久久| 美日韩精品免费视频| 91精品国产高清久久久久久| 国内成人精品视频| 国产女人18毛片水18精品| 欧美日韩一区二区免费在线观看| 欧美电影在线观看网站| 日本不卡高字幕在线2019| 国产视频精品免费播放| 亚洲美女视频网| 国产精品一区二区av影院萌芽| 国产最新精品视频| 性欧美激情精品| 久久中文字幕视频| 欧美性受xxxx黑人猛交| 九九精品在线播放| 久久亚洲精品国产亚洲老地址| 亚洲精品中文字幕av| 欧美视频二区36p| 亚洲成人三级在线| 91视频国产一区| 国产精品美女无圣光视频| 日韩激情第一页| 精品国产一区二区三区久久| 日韩在线免费高清视频| 亚洲在线www| 久久这里只有精品99| 亚洲人av在线影院| 国产精品专区一| 最近2019年中文视频免费在线观看| 国产午夜精品一区二区三区| 亚洲男人天堂九九视频| 日韩在线免费高清视频| 亚洲男人天堂2019| 97av在线视频| 日韩三级成人av网| 91精品国产综合久久久久久蜜臀| 国产美女精品免费电影| 欧美性videos高清精品| 日韩视频在线免费观看| 国产成人精品a视频一区www| 国产精品久久久久久久久久东京| 国产精品久久久999| 91色视频在线导航| 国产91成人在在线播放| 精品亚洲aⅴ在线观看| 久久久久国产一区二区三区| 亚洲欧美日韩精品久久奇米色影视| 国产福利精品视频| 国产欧美精品一区二区三区-老狼| 日日噜噜噜夜夜爽亚洲精品| 国产精品一区二区久久久久| 日韩成人av网| 亚洲精品国精品久久99热一| 97超碰国产精品女人人人爽| 在线视频欧美性高潮| 日韩免费观看网站| 成人www视频在线观看| 日韩精品免费看| 最近免费中文字幕视频2019| 欧美激情伊人电影| 国产成人精品免费视频| 色狠狠av一区二区三区香蕉蜜桃| 日本欧美一二三区| 亚洲在线观看视频| 色七七影院综合| 成人福利视频在线观看| 九九视频直播综合网| 亚洲精品国产精品久久清纯直播| 日韩av免费在线看| 亚洲色图校园春色| 欧美最猛性xxxxx免费| 精品美女永久免费视频| 亚洲摸下面视频| 久久久精品久久| 久久影视电视剧免费网站清宫辞电视| 亚洲无线码在线一区观看| 欧美成人精品h版在线观看| 97久久超碰福利国产精品…| 亚洲国产黄色片| 国产成人精品久久二区二区91| 91精品国产自产91精品| 久久久国产91| 欧美日韩国产精品一区| 欧美激情综合色综合啪啪五月| 亚洲成人精品av| 国产精品美女在线| 国产精品久久久av久久久| 国产成人91久久精品| 国产精品久久久久久久久久久久久| 欧美高清在线视频观看不卡| 日韩成人中文字幕在线观看| 日韩美女av在线| 一区二区三区高清国产| 欧美日韩国产在线| 国产精品综合久久久| 欧美亚洲国产精品| 中文字幕亚洲欧美| 91成人性视频| 久久99精品久久久久久青青91| 57pao国产成人免费| 欧美黄色三级网站| 中文字幕国产精品久久| 国产亚洲美女久久| 国产丝袜视频一区| 欧美日本啪啪无遮挡网站| 久国内精品在线| 黄色成人在线播放| 亚洲xxx自由成熟| 亚洲美女动态图120秒| 国产日本欧美一区二区三区在线| 亚洲另类图片色| 成人在线播放av| 欧美疯狂做受xxxx高潮| 国内精品视频一区| 久久久亚洲欧洲日产国码aⅴ| 日韩免费av一区二区| 97国产真实伦对白精彩视频8| 国产专区欧美专区| 国产日本欧美视频| 日韩成人在线网站| 欧美日韩中文在线观看| 日韩在线观看你懂的| 久久精品国产一区二区电影| 久久九九精品99国产精品| 久久综合电影一区| 欧美孕妇孕交黑巨大网站| 欧美日韩一区二区免费在线观看| 91精品国产777在线观看| 日韩在线中文字幕| 久久成人精品视频| 国产美女搞久久| 成人亚洲激情网| 日韩视频永久免费观看| 亚洲精品日产aⅴ| 久久久免费av| 国产一区二区三区免费视频|