簡體   English   中英

angular-cli自定義原理圖/集合

[英]angular-cli custom schematics / collection

我正在嘗試為角度cli創建自定義原理圖。 到目前為止,我已經想通了“集合”必須編譯,cli無法讀取打字稿。 這意味着您不能只是克隆https://github.com/angular/devkit/tree/master/packages/schematics/angular更改您需要的內容並將其發布到npm,這意味着您需要克隆整個https:// github.com/angular/devkit並使用其npm run build來創建您需要通過tsc運行它的 編譯原理圖 ,然后您可以將這些編譯的文件發布到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 )將使用以下列表解決:

  • 它是一個相對於process.cwd()的節點包嗎?
  • 它是一個相對於工具的節點包(在你的情況下是CLI)?
  • 它是全局安裝的節點包嗎?

您可能會注意到有兩個丟失的后備缺失; 它是一個相對於你的原理圖的包,它是一個相對於你的項目的包嗎? 即將到來,實施起來有點復雜。 無論如何,您可以全局安裝原理圖,這樣可以正常工作。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM