2017-06-12 45 views
0
  1. 我有一個簡單的角度組件創建使用角CLI(ng新組件名稱,這有示例模塊)。
  2. 將組件名稱發佈到我的私有npm存儲庫。
  3. 納克建立用於創建發佈文件 - DIST/mySampleComponent.js : :
  4. 創建使用角CLI另一簡單的角應用。
  5. 做了NPM安裝到安裝模塊組件的名稱
  6. 該模塊下node_modules /成功地複製到角應用@私人回購/組件的名稱
  7. 當我導入{SampleModule}從「@private -repo/component-name'在我的AppModule中;我收到以下錯誤

模塊'「.../node_modules/@ private-repo/component-name/dist/mySampleComponent''沒有導出成員'SampleModule'。如何創建一個可重用的角度2組件(庫)

有什麼想法?

+0

好像你可能在某種程度上被採用了棱角分明的角圖書館,這不是前行事標準。 Angular是開發單頁網頁應用程序的框架,並未設置用於創建獨立的npm模塊。在使用'ng build'構建Web應用程序之後,它只是一個單頁的Web應用程序。 –

+0

在sample.module中的section部分導出:[...]放入您的模塊和組件 – alehn96

回答

0

「NG構建用於創建分發文件 - DIST/mySampleComponent.js」

我懷疑這是你要去哪裏錯了。

當你的build是一個角度項目,它將打字稿編譯爲javascript。 Javascript沒有模塊或組件,因爲它們被轉換爲原生javascript/webpack代碼。

,你得到了錯誤的原因...

Module '".../node_modules/@private-repo/component-name/dist/mySampleComponent"' has no exported member 'SampleModule'.` 

...是因爲你的mySampleComponent.js不再包含相關模塊裝飾/元數據由角transpiler識別。


如果你進入一個角項目和甩尾通過一些預編譯的進口在node_modules如在@angular/corerxjs等,你會看到,這些都包括打字稿文件。將此與編譯後使用的相比較,您可以看到它們只包含.js文件。這是由於前面提到的。

+0

不應該在ts中使用以下編譯器選項{'「target」:「es5」, 「module」:「es2015」}。配置足以吐出適用於任何瀏覽器的最終捆綁包 – Jay

0
  1. 納克構建簡單的編譯打字稿和吐奶的JavaScript
  2. 獲取JavaScript的transpiled版本中,我們可以使用編譯器「NGC」
  3. 如果你的代碼,包括CSS和HTML,那麼我們就需要更多的捆綁API像的WebPack

所以爲了打造我們需要NGC +的WebPack(SystemJS,一飲而盡或任何其他構建框架)

相關問題