2013-03-27 10 views
8

私は開発で私の依存関係を管理するためにRequireJSを使用していますが、生産時にはAMDローダーのすべての依存関係を削除したいと思います。 RequireJSオプティマイザは、実行時にAMDの負荷を使用するファイルを作成するようです - 私はちょうど静的な(AMDに依存していないがまだAMDと互換性のある)ファイルを探しています。例えば、jqueryソースでは、彼らは手動で彼らのgruntファイルの依存関係を注文しているようです)。これは可能ですか?AMD依存関係を削除するためにRequireJSをコンパイルします。

私はRequireJS以外の他のライブラリも使用しています。

注:これは私の他の質問Javascript requirejs in development but compiled in productionに似ていますが、この場合はすべて一緒にAMDを削除したいと思います。

+1

アーモンドのような小型のAMDローダーの使用はいかがですか? - https://github.com/jrburke/almond –

+0

@SimonSmith私はコンパイルされたバージョンからすべて一緒にAMDを削除することを目指しています。単一のファイルにコンパイルすると、なぜAMDを使用する必要がありますか? –

+0

私はAMDが必要であることを望んでいないので、これについても興味があります(ちょうど十分です)。これで解決しましたか? –

答えて

3

<script>タグまたはAMD経由でスクリプトをロードしたい場合は、how my EventEmitter class exposes its selfに基づいて何かを使用するとよいでしょう。

// Expose the class either via AMD, CommonJS or the global object 
if (typeof define === 'function' && define.amd) { 
    define(function() { 
     return EventEmitter; 
    }); 
} 
else if (typeof module !== 'undefined' && module.exports){ 
    module.exports = EventEmitter; 
} 
else { 
    this.EventEmitter = EventEmitter; 
} 

これはAMD、CommonJS(ノード)及びグローバル・オブジェクト(すなわちwindow)を介して物体を露光。これには1つの主な注意点があります。これは、AMD経由でクラスを公開したい単一のファイルスクリプトを対象としています。

多くのモジュールをお持ちの場合は、最初にでスクリプトをコンパイルし、AlmondでAMDをシムにして上のように複数の方法で公開することができます。

-1

です。 requirejsベースのプロジェクトをJS Stoneにコンパイルします。 オーバーヘッドは基本的にゼロです。

-1

私はあなたと同じ問題を抱えていました。

最後に私はそれを解決し、自動化を実行するrequireJSプロジェクトとGruntfileの基本構造を作成しました。

  1. レスプロセス
  2. 最適化requireJS。
  3. AMDを削除する
  4. HTMLのscriptsタグをrequire構文からscriptタグsintaxに置き換えます。

私はこれがあなたを助けてくれることを願っています。

https://github.com/sheldorn/require-base-structure

関連する問題