2013-02-21 117 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