2016-12-14 196 views
2

我正在尋找在Angular2 datepicker組件上工作,就像在多個項目中發佈和包含一樣。與使用angular-cli構建的常規Angular2項目相比,爲此構建項目的最佳方式是什麼?這樣的任務是否有任何優秀的啓動項目/種子的例子?還是應該組件庫實際上是一個angular2應用程序本身?什麼是構建Angular2組件庫的最佳方式?

我最初的設想是,我可以創建一個標準的項目,angular-cli具有單個模塊(例如MyDatepickerModule),其中包含成分的形成日期選擇器,但是我不知道這是不是最好的方式,因爲我的等級不需要完整應用程序提供的所有內容。

感謝您的任何指導!

+0

您仍然可以使用angular-cli並刪除不需要的部分。 cli讓你立即潛入編碼而不用擔心webpack安裝的能力是相當不錯的。 –

+0

你打算如何將代碼分發給這些多個項目?通過npm? – snorkpete

回答

2

我會發布帶有AoT兼容性的庫。

這意味着使用ngc編譯器編譯源代碼。在分發包中,我將發佈JS源代碼,原始html/css文件,d.ts typings文件和ngc生成的metadata.json文件。

我推薦使用es2015模塊發佈JS源代碼,因爲這會讓你的庫樹變得震撼。我將目標es5 JS,但與es2015模塊。 TypeScript允許通過將模塊設置爲ES2015並將目標設置爲tsconfig.json中的es5來實現此混合模式。

發佈這些文件將使您的圖書館AoT兼容和樹可搖擺。

這是所有消費應用程序的需求,以便將您的庫編譯成完整的應用程序。

不建議在你的包中發佈TypeScript,因爲這將要求消費者複製你的構建環境(typings + TS編譯器版本)。

你也可以發佈一個JiT兼容的umd包,內嵌模板和css。這可能是有幫助的,因爲編譯過程中開發過程中可能不實際,因爲編譯有點慢。 umd軟件包將使您可以在基於JiT的開發環境中使用您的庫。對於生產,雖然你一定要使用AoT版本。

由於CLI主要是構建完整應用程序的工具,因此CLI不適合發佈庫。儘管如此,他們可能會更好地支持圖書館。

+0

非常感謝,我將不得不閱讀您提到的內容,但它在概念層面上有意義。 –

1

結賬https://github.com/angular/material2。一個正在進行的工作,它是一個應用材料設計的Angular2的控件和主題庫,是學習構建自己的控件庫的極好來源。

+0

感謝您的支持! –

相關問題