2016-12-25 2 views
3

私はしばらく探していましたが、私の問題の解決策は見つかりませんでした。私はr.jsrequirejs最適化中にプラグインの依存関係を除外する方法

requirejs.optimize({ 
    baseURL: '/js', 
    name: 'main', 
    ... 
}) 
を使用して単一のビルドにすべてのモジュールを最適化しようとすると問題が発生require.jsを使用して、モジュールの一部

define(['Plugin!data', 'dependency'], function(data, dep) { 
    ... 
} 

のためのデータを動的にロードするためのプラグインを使用しています

オプティマイザは、プラグインを介してデータをロードしようとします。それを避ける方法はありますか?

すなわち:!あなたは、このようなモジュールを除外するようにビルド設定でexcludeを使用することができます

答えて

1

...フォーマットプラグインに何を通過しないようにオプティマイザに指示する方法について説明します。例えば:

({ 
    baseUrl: "js", 
    dir: "build", 
    removeCombined: true, 
    optimize: "none", 
    modules: [ 
     { 
      name: "built", 
      create: true, 
      include: [ 
       "modA", 
      ], 
      exclude: [ 
       "text!./x.json", 
      ], 
     }, 
    ], 
}) 

このかかわらに問題があっexcludeにはパターンマッチングではありません、あなたは大規模なコードベース上のビット問題となることができ、個別に各モジュールをリストアップする羽目になるということです。

別の方法は、text!で始まるすべてのモジュールを削除するためにonBuildWriteを使用することである。

({ 
    baseUrl: "js", 
    dir: "build", 
    removeCombined: true, 
    optimize: "none", 
    modules: [ 
     { 
      name: "built", 
      create: true, 
      include: [ 
       "modA", 
      ], 
     }, 
    ], 
    // Use onBuildWrite to exclude modules loaded through plugin. 
    onBuildWrite: function (moduleName, path, contents) { 
     if (moduleName.lastIndexOf("text!", 0) === 0) { 
      return ""; 
     } 
     return contents; 
    }, 
}) 
関連する問題