1

我正在開發中的Visual Studio 2015年一個Web應用程序與Angular2打字稿。我正在使用Gulp來生成分佈式縮小js文件。隨着Angular2我明白了,沒有必要transpile 打字稿沒有導入模塊時的Visual Studio,也不符合咕嘟咕嘟SystemJs做的。Angular2打字稿transpiler與縮小/醜化

現在是這樣一個問題:

如何SystemJs與縮小,醜化等工作?

System.import('app/main').then(null, console.error.bind(console)); 

如何縮小或醜化這個?

+0

分析多一點,我看到'System.config'有一個名爲包屬性,在那裏我可以捆綁我的多個模塊。我沒有發現任何關於uglifying的事情。 – DAG

+0

該選項屬於[SystemJS Builder](https://github.com/systemjs/builder#minfication--source-maps)。 Angular2教程不使用SystemJS Builder –

回答

6

SystemJS是

通用動態模塊加載 - 加載ES6模塊,AMD,CommonJS的並在瀏覽器和全球的NodeJS腳本。適用於Traceur和Babel。

事實上,有兩種方法可以使用SystemJS:

  • Transpile您的打字稿文件瀏覽器內。這意味着SystemJS會加載你的模塊,它會加載相應的TypeScript文件並在運行中對它們進行轉儲。下面的配置可以在這種情況下使用:

    <script> 
        System.config({ 
        transpiler: 'typescript', 
        typescriptOptions: { 
         emitDecoratorMetadata: true 
        }, 
        packages: { 
         'app': { 
         defaultExtension: 'ts' 
         } 
        } 
        }); 
        System.import('app/main') 
        .then(null, console.error.bind(console)); 
    </script> 
    
  • 使用以前transpiled文件。在這種情況下,您需要使用TypeScript編譯器從TypeScript生成JS文件。這些JS文件直接依賴於SystemJS API來註冊和導入模塊。

    <script> 
        System.config({ 
        packages: { 
         'app': { 
         defaultExtension: 'js' 
         } 
        } 
        }); 
        System.import('app/main') 
        .then(null, console.error.bind(console)); 
    </script> 
    

這個問題也可以幫助你:

這就是上下文。關於你的問題,你似乎使用第一個選項。要回答你的問題,縮小事情只適用於第二種選擇。事實上,這對應於優化爲您的應用程序加載的元素(網絡調用數量,文件大小)。既然你使用了這個選項的編譯JS文件,你可以縮小/醜化它們。如果你只想創建一個JS文件,你可以考慮TypeScript編譯器的outFile屬性。

詳情請參閱此問題:

+0

這真是太棒了。非常感謝你。正如我在上述文章中看到的,即使是System.config也不再需要。你知道爲什麼? – DAG

+0

不客氣!在你不需要System.config的情況下,由於outFile模塊在輸出文件中用'System.register'顯式註冊。你不需要使配置成爲模塊和文件名之間的對應關係(沒有選項就需要)...... –