2015-12-02 78 views
3

現在我已經成功地將角度2組件集成到我們的angularJS應用程序中了,我想讓它們爲發佈版而醜化。但是,如果我讓我們的SystemJS建設者,我得到以下錯誤:Angular2 with angularjs uglify

Fatal error: ENOENT: no such file or directory, open '{webAppRoot}angular2\angular2.js' 

看來,它正試圖醜化要求(「angular2/angular2」),它不能正確地解決它。我如何正確uglify角2應用程序?

請注意,應用程序的angularJS部分是使用ES5 JS和AMD編寫的,而angular2模塊正在使用SystemJS編譯爲ES5。 SystemJS然後用於加載AMD以及CommonJS模塊。

+0

好問題。我在考慮在System.Config參數中,你會設置defaultExtension爲'min.js',但我還沒有得到它的工作來加載minified模塊。 – brando

回答

2

我使用JSPM使我的angular2項目生產準備就緒。其他流行的工具如JSPM包括webpack和browserfy。 JSPM將完成的重要任務之一是捆綁組成您的angular2項目的各種模塊。我還將「selfExecutingBundle」標誌設置爲true,並使JSPM生成一個捆綁的js文件(例如myApp.bundle.js),並從那裏對它進行縮小/ uglify(myApp.bundle.min.js),並使用此腳本引用在index.html文件中。

<html> 
 

 
<head> 
 
    <title>Hello Angular World</title> 
 
</head> 
 
<body> 
 
<div> 
 
    <my-app>Loading...</my-app> 
 
</div> 
 
    <script src="/js/myApp.bundle.min.js"></script> 
 
</body> 
 

 
</html>

這就是你所需要的!在未來,當HTTP/2規範更常見時,可能不太需要捆綁/縮小基於模塊的項目,但現在我認爲這是必要的。

+0

只是一個建議,展示bundle-sfx命令的外觀是非常有益的。同樣,我也不能等到HTTP/2。 –

+0

@EvanPlaice關於jspm捆綁的更多細節請查看這個答案:http://stackoverflow.com/a/34616199/3532945 – brando

+1

Wat?這是一種不必要的複雜捆綁方法。你可以使用'jspm bundle-sfx --minify js/myApp.js js/myApp.bundle.min.js'完成相同的操作。 JSPM將跟蹤應用程序中'import'語句的所有依賴關係。這就是我在這裏使用https://github.com/evanplaice/evanplaice.com/blob/master/package.json。 –