[英]angular-cli custom schematics / collection
我正在嘗試為角度cli創建自定義原理圖。 到目前為止,我已經想通了“集合”必須編譯,cli無法讀取打字稿。 這意味着您不能只是克隆https://github.com/angular/devkit/tree/master/packages/schematics/angular更改您需要的內容並將其發布到npm,這意味着您需要克隆整個https:// github.com/angular/devkit並使用其您需要通過tsc運行它的 npm run build
來創建編譯原理圖 ,然后您可以將這些編譯的文件發布到npm並使用npm進行全局安裝,例如
npm i -g @thescrollbar/schematics
然后我應該能夠做ng new --collection=@thescrollbar/schematics my-app
但令人驚訝的是,它沒有用,並且正在拋出tree.branch is not a function
。
但是如果將這個全局安裝的包復制到cli的模塊中
/usr/local/bin/node_modules/@thescrollbar/schematics
- > /usr/local/bin/node_modules/@angular/cli/node_modules/@thescrollbar/schematics
它開始工作,你可以創建一個基於你的原理圖的新應用程序..
現在,對於新問題,當我嘗試使用生成新組件時,我沒有解決方法
ng gc --collection=@thescrollbar/schematics logo
它創建它使用@schematics/angular
模板,而不是我的集合,盡管事實上,當我故意這樣做
ng g shat --collection=@thescrollbar/schematics logo
它說
在集合“@ thescrollbar / schematics”中找不到原理圖“shat”。
我認為這清楚地表明它確實在使用我的收藏品?
有人設法讓自定義集合工作嗎? 全球和生成組件/模塊?
/ usr / local / bin / node_modules / @ thescrollbar / schematics - > / usr / local / bin / node_modules / @ angular / cli / node_modules / @ thescrollbar / schematics
是的,這是當前實施的問題。 那是因為我們(盲目地)在集合名稱上調用require.resolve
,它只能從當前模塊(即CLI)解析。 應該在本周發布的修復傳入( PR 163 )將使用以下列表解決:
您可能會注意到有兩個丟失的后備缺失; 它是一個相對於你的原理圖的包,它是一個相對於你的項目的包嗎? 即將到來,實施起來有點復雜。 無論如何,您可以全局安裝原理圖,這樣可以正常工作。
ng gc --collection = @ thescrollbar / schematics徽標
它使用@ schematics / angular模板創建它,而不是我的集合
這是一個已知問題,我們有一個PR在CLI中修復它。 這也是一個解決方案。
感謝您試用Schematics。 這是一個很長時間的項目,我們仍然在修復很多小問題。 我們很快就會有更好的文檔和教程(包括原理圖原理圖)。 這幾乎是一項正在進行中的工作,所以非常感謝您對它的耐心等待。
您可以在Angular DevKit倉庫中提交問題和錯誤( https://github.com/angular/devkit )。
cli 1.4.1的快速修復是編輯node_modules/@angular/cli/commands/new.js,在run:function(commandOptions,rawArgs)中更改行
commandOptions.collectionName = this.getCollectionName(rawArgs);
至
commandOptions.collectionName = commandOptions.collection || this.getCollectionName(rawArgs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.