javascript - RequireJSの同じ構成ファイルを使用して、並列ディレクトリの下でモジュールを最適化/構築する

javascript requirejs amd

タイトルだけでは説明がつかないような気がします:)

セットアップ

次のような構造があるとします。



app.jsファイルは、次のようなアプリケーションのメインブートストラップ/エントリモジュールです。

app01

require.config({});

require([
    'app/component1.js'
], 
function(component){
    // do something with component1
});


app02

require.config({});

require([
    'app/component2.js'
], 
function(component){
    // do something with component2
});


どちらも適切なindex.htmlファイルで機能します。

app01のRequireJSビルド構成ファイル(パスに関連する正しい配置を想定)があります。

({
    appDir: 'apps/app01',
    baseUrl: '.',
    dir: 'built_apps/app01',
    optimize: 'closure',
    paths: {
    },

    modules: [
        {
            name: 'app'
        }
    ]
})


うまくいきます。同様のファイル(app01app02で置き換える)は、app02では問題なく機能します。

問題/目標

今度は、同じビルド構成ファイルを使用して、できれば実際にすべての名前ごとのアプリ(数と名前は時間とともに変化する可能性があるため)。

基本的に、私は次のようなものを期待しています(または希望しています)。

({
    appDir: 'apps',
    baseUrl: '.',
    dir: 'built_apps',
    optimize: 'closure',
    paths: {

    },

    modules: [
        {
            name: 'app*/app' // notice the wildcard
        }
    ]
})


これはbuilt_appsディレクトリで実行され、app * / appの下にあるすべてのアプリを見つけて、それぞれを最適化します。

Antを使用して、そのようなビルド構成ファイルをアプリごとにオンザフライで作成し、それに対してビルドを実行してクリーンアップできることはわかっていますが、RequireJSソリューションが必要です。

RequireJSでこのようなことをする方法はありますか?
答え
RequireJSには、組み込みのワイルドカード構成はありません。いずれにしても、これを行うにはコードが必要です。ここであなたが求めていることは、mustache.jsがテンプレートに提供するものと同様に、ワイルドカードをモジュールオブジェクトのある種の暗黙の反復に変換することに相当します。 IMO、これはこの状況ではかなり脆弱で限定的なアプローチです。

代わりに、ビルド構成のJavaScriptでプログラムによってmodules配列を生成することをお勧めします。思い出してください、ビルド構成は単なるJSONデータ構造ではなくJavaScriptです。これにより、高度なスクリプト機能が提供されます。

requirejs-rails gemのビルド構成でこの種のスクリプトを作成しました。以下は、ビルド時にr.jsが何を表示するかを示すexample gistです。
関連記事

javascript - pygtkインターフェイスのJavaScriptインターフェイス?

javascript - JavaScript asp.netでのCTRL + V(貼り付け)関数の自動フォーマット

javascript - JavaScriptで2つの変数を結合する

javascript - JQueryを使用したSongkick API

javascript - 列に表示されるデータをフォーマットする方法

javascript - JavaScriptで3次元配列をソートする

asp.net - これは、WebDriverを使用してJavaScript警告ダイアログを処理する正しい方法ですか?

javascript - Google Fusion Tablesで変更を行うことができません(挿入、テーブルの追加など)

javascript - Dojoスパイダーチャートの固定軸

c# - ASP.NET MVC3、Razor-JavaScriptでのViewBagまたはURL変数の使用