2017-01-08 6 views
0

私はjavascriptプロジェクトをrequirejsのr.jsオプティマイザで最適化しようとしています。私は私のプロジェクトでamdモジュールとnon-amdモジュールの両方を使用しています。 requirejs環境とrequirejs環境を持たない環境の2つの環境があります。非requirejs環境のファイルは、呼び出しを必要とするか定義するべきではありません。 r.jsを使用してamdモジュールをバンドルに結合している間は、ファイルの最後にバンドル名を持つ定義呼び出しを持つことは問題ありません。しかし、ファイルが最適化された後の非requirejs環境では、ファイルの最後にモジュール名を含む定義挿入も得られます。バンドルの最後に定義を含める方法をスキップする方法requirejs optimizer r.jsを使用して非amdスクリプトファイルを結合する場合

私は4つのファイルAとBがAMDモジュールであり、CとDはAMD以外のモジュールです。

私build.jsこれはAMD-ファイルがどのように見えるのバンドルです。この

({ 
    appDir: "../", 
    baseUrl: "./", 
    dir : "../../../output", 
    paths: { 
     A : '../somepath/to/A', 
     B : '../somepath/to/B' 
    }, 
    modules : [ 
     { 
      name : 'bundle1', 
      create : true, 
      include : ['A', 'B'] 
     }, 
     { 
      name : 'bundle2', 
      create : true, 
      include : ['C', 'D'] 
     } 
    ], 
    // removeCombined : true, 
    cjsTranslate: false, 
    optimizeCss : "none", 
    skipModuleInsertion: true, 
    optimize: "uglify", 
    fileExclusionRegExp: /^(((r|app.build)\.js)|(v0))$/, 
    keepBuildDir: false, 
    bundlesConfigOutFile: "bundles.js", 
    onModuleBundleComplete : function(data) { 
     console.log(data) 
    } 

}) 

のようなものです。

define('A', function(){ 
//some stuff of A 
}); 
define('B', function(){ 
//some stuff of B 
}); 
define('bundle1',function(){}); 

バンドルされた非AMDファイルには、この状況を解決する方法

//some stuff of C 
}); 
//some stuff of D 
define('bundle2',function(){}); 

のように見えます。私は最適化のドキュメントとexample.build.jsを見てきました。まだ方法を理解できませんでした。何か不足していますか? non-amd-modulesの終わりに定義呼び出しを除外する方法がありますか?はいの場合、どのように?

答えて

0

skipModuleInsertionのドキュメントを参考にしてください。なぜそれができなかったのか分かりません。

ファイルに書き込む前にビルドが完了した後でも、onBuildWrite

を使用して特定の定義コールを削除できます
関連する問題