2016-11-04 104 views
1

我們來到這裏是因爲角度還很年輕,也沒有工作compiler-cli和類似的東西這是大部分開發一個相當大的Angular 2應用。正如我所做的那樣,我總是想到,在某些時候,我們會有一棵樹在顫抖,AoT編譯,我試圖讓它工作一段時間,但仍然沒有管理。應用匯總和樹木搖晃

問題是,每當我嘗試應用rollup中的任何一個可以在www上找到的例程時,我都會偶然發現其他東西...。

我認爲是什麼讓這種構建不同於其他人可以在網上看到的是項目佈局 - 我們在這裏有一堆自己寫的外部Angular 2 npm模塊,封裝一些通用功能,最終項目和應該被包含在最終捆綁中。

所以佈局是:

1)是含有伴隨着transpiled到es2015格式JavaScript版本TypeScript源文件的多個npm模塊;

2)是具有依賴於那些從外部npm模塊進口重型其自己的模塊的應用程序;

3)而且我不要求很多 - 我只是想:1)包裝他們所有的樹搖動包內,併爲做到這一點; b)以非常相同的佈局實施生產編譯的AoT編譯;

問題

每當我試圖用最簡單的rollup模塊例如我最終跌入類似:'createPlatformFactory' is not exported by node_modules\@angular\core\bundles\core.umd.js (imported by node_modules\@angular\platform-browser-dynamic\src\platform-browser-dynamic.js). For help fixing this error see https://github.com/rollup/rollup/wiki/Troubleshooting#name-is-not-exported-by-module這發生時,我嘗試transpile項目JavaScript,然後用rollup捆綁它,甚至當我嘗試通過rollup-plugin-typescript啓動它。

我就這一個假設是,即使角的來源,因爲RC6在es2015格式core.umd.js不是 - 它是在具有不同的進口/出口UMD格式等

所以,任何人都可以證實這是一個問題?另外,我們如何解決這個問題? (我真的已經嘗試了所有解決問題的策略,我可以想像,沒有他們的工作。)

希望有人能夠幫助這一點。

回答

0

上面提到的問題實際上是rollup的目標是umd輸出包而不是es6源文件,並且可以通過將角度模塊請求路徑重定向到源文件來解決問題,就像我發現的那樣:

if (id.startsWith('@angular/')) { return `${__dirname}/node_modules/${id}/index.js`; } 而且,因爲這樣做rollup過程沒有錯誤繼續。這無疑聽起來像一個成功的,但它不是...

在結果我沒有看到任何告示上被丟棄的方法,爲我所期望的,我沒有看到在輸出集束大小的任何顯著下降。

此外,作爲輸出束試圖轉換通過運行這樣到ES5格式:

tsc --target es5 --allowJs ./dist/bundle.es2015.js --out ./dist/bundle.js

我得到的RangeError: Maximum call stack size exceedednode_modules\typescript\lib\tsc.js:37826

的錯誤,以便它再次相同的 - 一個問題解決了導致另一個仍然沒有結果。

關於如何處理這個任何想法將不勝感激!

順便說一句 - 任何人都知道@angular樹會在互聯網上可以找到的任何示例中發揮作用,考慮到所有這些示例顯然都是針對UMD包而不是ES6源文件?