2012-07-09 29 views
1

我開發了一個iPad/iPhone應用程序Web應用程序。兩者都分享一些資源。現在我想建立一個自舉JS,看起來像這樣:使用require.js創建不同版本的一個引導文件

requirejs(['app'], function(app) { 
app.start(); 
}); 

app資源應該是ipadApp.jsiphoneApp.js。所以我創建優化以下構建文件:

{ 
    "appDir": "../develop", 
    "baseUrl": "./javascripts", 
    "dir": "../public", 
    "modules": [ 
    { 
     "name": "bootstrap", 
     "out": "bootstrap-ipad.js", 
     "override": { 
     "paths": { 
      "app": "ipadApp" 
     } 
     } 
    }, 
    { 
     "name": "bootstrap", 
     "out": "bootstrap-iphone.js", 
     "override": { 
     "paths": { 
      "app": "iphoneApp" 
     } 
     } 
    } 
    ] 
} 

但這似乎並不工作。它僅適用於一個模塊,但不適用於具有不同輸出的相同模塊。

我唯一想到的另一個解決方案是4個構建文件,這似乎有點奇怪。那麼是否有解決方案,我只需要一個構建文件?

回答

1

AFAIK的r.js優化只能輸出給定名稱一旦模塊 - 在你的情況,你正試圖生成一個名爲bootstrap兩倍的模塊。 require.js的作者,@jrburke做一個相關的問題here以下注釋:

...現在你需要爲每一個腳本單獨構建命令作爲目標,因爲name屬性會永遠是每個人的「almond.js」。

他還建議:

...如果你想只是一個構建文件來運行,你可以創建一個節點計劃,並多次推動優化器在一個腳本文件。 This example顯示使用requirejs作爲模塊並調用requirejs.optimize()。

我採取了類似的做法在我的項目之一 - 我做了我build.js文件ERB模板並創建了一個Thor任務,通過我的模塊跑啊跑r.js一次,每次一粒。但@ jrburke的解決方案使用node.js更清潔。

+0

我已經加入了一個小節點構建腳本,用於加載和操作我的核心構建conf並創建4個不同版本的項目。 – 2012-07-11 15:53:21

相關問題