2013-12-19 13 views
8

私はアプリでJavaScriptを小さくするにはgrunt-contrib-uglifyタスクでつかんで接続しています。UglifyJSの 'strict strict'ステートメントを使用

細分化すると、非常に最初のものを除いてすべて'use strict'のステートメントが削除されるため、上部に「use strict」ディレクティブが付いた巨大なJavaScriptファイルが表示されます。

グローバルな'use strict'ディレクティブは、私が厳密なモードのために書かれたサードパーティのコードではないので、私が "strictモード"でプロジェクトで使用しているすべてのlibのコードをブラウザに実行させ、 。

これを解決する方法はありますか?

+0

UglifyJS2プロジェクトページの[このコメント](https://github.com/mishoo/UglifyJS2/issues/128#issuecomment-13805371)に記載されているように、解決するのは簡単ではありません。 –

+0

@rawry次のバージョンのhttps://github.com/mishoo/UglifyJS2を試してみることができますか?この新しいバージョンで問題が解決されたように見えます。 – Vishwanath

答えて

6

IIFEですべてのスクリプトをラップすると、grunt-contrib-uglifyはそのステートメントを停止位置に配置せず、作成するすべてのIIFEにそのスクリプトを残します。

(function() { 
    'use strict'; 

    // do stuff 
})(); 

はい、それはより多くのコードですが、あなたがファイルをgzipping場合には非問題にする必要があります。また、これにより、グローバルスコープ外で定義した変数が保持され、よりパフォーマンスの高いコードになります。

+0

ちょうどこの質問が古代であることを実感しました。 –