2012-07-13 7 views
12

R.jsがshimをロードしていないため、jQueryがtinyMCEより前にロードされていて、読み込み前にtinyが初期化されています。どのように私は、シムが仕事を得ることができます?:Require.js + R.js Optimizer Shimを無視する

ビルドjs.js:

var requirejs = require('requirejs'); 
var config = { 
    mainConfigFile: '../js/main.js', 
    include: [], 
    name: 'main', 
    out: '../js/build/build.js', 
}; 

    requirejs.optimize(config, function (buildResponse) { 
    var contents = fs.readFileSync(config.out, 'utf8'); 
}); 

main.js:

require.config({ 
    paths: { 
     jQuery: 'common/libs/jquery/jquery-min', 
     TinyMCE: 'common/libs/tinyMCE/tiny_mce', 
    }, 
    shim: { 
     'jQuery': { 
      deps:['TinyMCE'], 
      exports: '$', 
     }, 
     'jQueryUi': { 
      deps: ['jQuery'] 
     }, 
     'jQuerySelectmenu': { 
      deps: ['jQuery', 'jQueryUi'] 
     }, 
     'jQueryAutosize': { 
      depts: ['jQuery'] 
     }, 
     'Underscore': { 
      exports: '_' 
     }, 
     'Backbone': { 
      deps: ['Underscore', 'jQuery'], 
      exports: 'Backbone' 
     } 
    } 
}); 

require(['common/src/app'], function (App) { 
    App.initialize(); 
}); 
+1

require.configは()r.js.され解析されていませんr.jsの設定ファイルを作成する必要があります。ここをクリックしてください:http://stackoverflow.com/questions/11323414/i-am-struggling-with-the-requirejs-optimizer-and-non-amd-modules/11454409#11454409 – devundef

+1

ポイントはありませんが、私はあなたを発見しました。アンダースコアの代わりに[lodash](https://github.com/bestiejs/lodash/)を使用し、アンダースコアシムを失うことがあります。 –

+0

jqueryの前に小さなものを本当にロードしたいのですか? – devundef

答えて

11

この問題はすでにちょうどビルドの設定で

wrapShim: trueを置くr.js 2.1.11

で固定されています。

github issue

configuration example

+1

問題の適切なリンク:https://github.com/jrburke/r.js/issues/623 – Victor

6

私は最近、私を少し持っていたいくつかの同様の問題に遭遇しました困った。私はTinyMCEコードに精通していませんが、あなたはそれをシミしていないことがわかります。

シム(一般的に)は、AMDスタイルライブラリに依存することはできません。 TinyMCEがAMDのモジュールスタイルのカテゴリに該当するかどうかはわかりませんが、そうであれば問題になります。そうでなければ、それをシムにする必要があります。

https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

「シム」設定のための重要な注意点:

のみ彼らの後シムスクリプトの依存関係、または依存関係を持っていないし、(定義コールAMDライブラリ)として、他の「シム」モジュールを使用また、グローバル(jQueryやlodashなど)を作成します。さもなければ、シム構成モジュールの依存としてAMDモジュールを使用すると、ビルド後にビルドのshimmedコードが実行されるまでそのAMDモジュールが評価されず、エラーが発生します。究極の修正は、すべてのshimmedコードをオプションのAMD define()呼び出しにアップグレードすることです。

関連する問題