.yo-ce.json配置檔案詳析
最近的專案開發是基於jHipster這個框架,藉助這個框架快速部署基於Spring Boot + Angular Web的應用確實很痛快,不過,由於各種自動化配置,這樣會導致在快速的變更迭代過程中,遇到各種坑,是這樣的啦,前人造輪,後人乘車,車子出問題,找輪子兩眼一抹黑啦,這當然需要花相當多的時間去填上,這當然需要花相當多的時間去填上,這次主要是分析其中的一個配置檔案,yo-ce.json這個檔案,由於不熟悉其中的某些屬性,導致開發進度拖累,寫一份開發筆記記錄下。
首先,我們知道這個是配置指令碼是屬於yeoman體系,檔案結構為json,接下來的分析都是基於yo-rc檔案的api內容。這個檔案儲存了多個生成器的配置檔案,現在以jhipster中自動生成的配置檔案為例
{ "generator-jhipster": { "promptValues": { "packageName": "xxx.yyy.zzz" }, "jhipsterVersion": "5.7.1", "applicationType": "monolith", "baseName": "zzz", "packageName": "xxx.yyy.zzz", "packageFolder": "xxx/yyy/zzz", "serverPort": "8080", "authenticationType": "jwt", "cacheProvider": "ehcache", "enableHibernateCache": true, "websocket": false, "databaseType": "sql", "devDatabaseType": "mariadb", "prodDatabaseType": "mariadb", "searchEngine": "elasticsearch","messageBroker": false, "serviceDiscoveryType": "eureka", "buildTool": "gradle", "enableSwaggerCodegen": false, "jwtSecretKey": "xxxxxxxxxx", "clientFramework": "angularX", "useSass": true, "clientPackageManager": "npm", "testFrameworks": [], "jhiPrefix": "jhi", "otherModules": [], "enableTranslation": false, "skipServer": true, "skipClient": true } }
整份json檔案,可以儲存來自多個生成器(generator)的配置物件,每個生成器都是有自己的名稱空間的,以確保生成器之間不會發生命名衝突,不過這樣也導致了不通生成器之間並不能共享配置,這個到時可能也會有坑,此時暫且不提。專案中配置物件則是"generator-jhipster": {"promptValues": {"packageName": "com.smpteam.amzradar"}
配置檔案中,詳細的記錄我們所採用的jhipster的版本號、應用型別、包的路徑、命名、開放的埠(8080)、身份校驗(JWT)、依賴的資料庫(mariadb)、建設倉庫(gradle)等內容。
這些東西都是自動化配置生成的,一開始就很爽了,快速搭建微服務,一鍵生成基於Spring Boot + Angular Web的開發環境,前端後臺一頓騷操作,然後再開發的過程中,不知道在何時的時候增加了配置檔案中的最後一行"skipServer": true這個會屬性會導致系統在重新生成依賴檔案直接忽略服務內容,不會對其生成新的變更,相應的還有"skipClient": true,這個會忽略的是客戶端的變更。
加上這個屬性是為了快速生成新的檔案,否則會將全域性所有的檔案覆蓋,因此這個屬性嘛,見仁見智了,看需求啦。