2013-02-21 116 views
3

在我當前的grails項目中,我們使用UglifyJS縮小了JavaScript文件,並且還在開發環境中使用這些縮小的資源。正如你可以看到的那樣,這對於在縮小版本上進行調試的屁股有點痛苦,修正了未縮小版本中的錯誤,將其縮小並再次調試。因此,我希望在開發環境中包含未縮小版本,並在生產環境中包含縮小版本。所以,我想調整ApplicationResources.groovy有以下方案:Grails資源插件並在每個環境中使用不同的資源

environments { 
    development { 
     modules = { 
      core { 
       resource url:"js/core.js" 
      } 
     } 
    } 
    production { 
     modules = { 
      core { 
       resource url:"js/core.min.js" 
      } 
     } 
    } 
} 

這不知何故不工作,拋出異常,如

Caused by GrailsTagException: Error executing tag <r:layoutResources>: No module found with name [core] 

我在做什麼錯在這裏?

更新:

我不確定我是否理解正確。我嘗試以下不工作,要麼:

更新:

ID加入的伎倆:)

ApplicationResources.groovy

modules = { 
    core { 
     resource id: 'core', url:"js/core.min.js" 
    } 
} 

DevelopmentResources.groovy

environment { 
    development { 
     modules = { 
      overrides { 
       core { 
        resource id: 'core', url:"js/core.js" 
       } 
      } 
     } 
    } 
} 

回答

6

嘗試在單獨的fi中定義dev和prod資源模塊LES。像StaticResources.groovy和ProductionResources.groovy。

每個資源文件最終都會爲Grails提供一個「模塊」關閉,然後Grails將每個文件提供的閉包定義合併在一起,以產生最終配置。

這是complete nabble discussion

+0

我不知道我是否理解你的權利,但我添加了我在原始帖子中嘗試過的內容,但它也不起作用:/ – Moritz 2013-02-22 12:04:51

+0

好吧,這樣做的竅門是分配ID。然後你指出我的解決方案效果很好。謝謝! – Moritz 2013-02-22 15:17:38

+0

確實效果不錯! – remudada 2013-11-26 10:11:33