2011-09-05 17 views
7

我像這樣運行在RequireJs中,如何指示優化器生成散列輸出文件名?

sudo /usr/local/bin/node /tmp/r.j/r.js -o name=main out=test.js baseUrl=. 

測試
優化現在,我該如何告訴優化輸出文件名作爲內容的散列值(顯然設置最大到期),然後重命名的依賴相關的需求調用?

一個例子情況會是這樣的

require({ 
     baseUrl: '{{ STATIC_URL }}js', 
     paths: { 
      jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min', 
      jqueryui: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min' 
     } 
    }, ['order!jquery','order!jqueryui','order!main']); 

requirejs應該拉像13KUJAW78M.js

基於Miller Medeiros’s suggestion我打算把所有的需要的呼叫到一個單一的主文件。這也意味着所有這些電話也需要進行優化。

e.g

switch(document.location.pathName){ 
     case '/foo': 
      require(['sections/foo/main']); 
      break; 
     case '/foo/bar': 
      require(['sections/foo/main', 'core/bar']); 
      break; 
     default: 
      require('sections/home'); 
    } 

需要([ '分段/富/主']);

應該優化爲散列文件。

有人可以幫忙嗎?

回答

4

RequireJS優化器沒有此選項,但是您可以重命名這些文件並使用paths config來設置重命名文件的別名,有關更多信息,請參閱this thread

在您的例子,例如,如果你的文件重命名爲:「章節/富/ main.123QWERT.js」,「節/ home.4567ASDFG.js」,「核心/ bar.0284ZXCV.js」你可以只需添加一個路徑配置是這樣的:

require.config({ 
    paths : { 
    //alias to new files without JS extension 
    'core/bar': 'core/bar.0284ZXCV', 
    'sections/home' : 'sections/home.4567ASDFG', 
    'sections/foo/main' : 'sections/foo/main.123QWERT' 
    } 
}); 

的路徑配置應該是不會被緩存的文件時,也許只是保持對HTML的配置。

+0

優化器會添加散列還是必須執行一些腳本+正則表達式魔術來替換文件名? –

+0

也可以主要與其他文件一起壓縮或應單獨 –

+0

RequireJS優化器不會添加散列,您將需要手動生成它(或使用我不知道關閉的某個工具)並傳遞路徑配置當一個模塊需要「core/bar」時,它會加載文件「core/bar.HASH_VALUE.js」。根據您的設置,您不需要爲許多文件生成哈希值。 main可以與其他文件一起壓縮。 –

相關問題