2012-01-24 15 views
2

我有一種感覺,標題只是可能沒有解釋:)優化/建造使用相同的配置文件下的並行目錄模塊RequireJS

設置

假設我有以下結構:

enter image description here

其中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文件都工作。

我有一個RequireJS構建配置文件(假設相關的路徑正確位置)爲app01

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

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

它工作得很好。類似的文件(app02更換app01)的作品只是罰款app02

問題/目標

現在我希望能夠運行RequireJS建立兩個app01app02工具(使用谷歌關閉犀牛螞蟻下,而不是真的在這種情況下,重要的)應用中使用相同構建配置文件,並且優選地不受名稱實際上列出所有的應用程序(因爲數量和名稱可以隨時間變化)。

基本上我希望(或者說希望)有這樣的事情:

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

    }, 

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

這將運行在built_apps目錄下查找應用程序* /應用中的所有應用程序和優化他們中的每一個。

我知道我可以使用Ant來創建針對它在每個應用程序的這種動態生成配置文件,運行構建和再清理,但我寧願有RequireJS解決方案。

有沒有辦法做這樣的事情與RequireJS?

回答

2

有用於RequireJS沒有內置的通配符配置。不管怎樣,你都需要代碼才能做到這一點。我觀察到,什麼你問這裏相當於一個翻譯成通配符的模塊對象,類似於什麼mustache.js提供的模板某種隱含的迭代。海事組織,在這方面這是一個相當脆弱和有限的方法。

相反,我建議在編譯配置中以編程方式在JavaScript中編程生成modules數組。回想一下,構建配置是JavaScript而不僅僅是一個JSON數據結構。這爲您提供了複雜的腳本功能。

我已經在requirejs-rails gem的構建配置中完成了這種腳本。這是一個example gist,顯示了r.js在構建時會看到的內容。

+0

是的,你可能是對的。正如你可能已經注意到我的第二個問題,我轉向了聲明式方法。謝謝。 – ZenMaster

相關問題