在我目前的grails项目中,我们正在使用UglifyJS缩小我们的JavaScript文件,并且还在开发环境中使用这些缩小的资源。正如您可以想象的那样,在缩小版本上进行调试时会有点痛苦,修复未缩小版本中的错误,将其缩小并再次调试。因此,我想在开发环境中包含非缩小版本,在生产环境中包含缩小版本。所以我尝试调整ApplicationResources.groovy以获得以下方案:
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"
}
}
}
}
}
答案 0 :(得分:6)
尝试在单独的文件中定义dev和prod资源模块。比如StaticResources.groovy和ProductionResources.groovy。
每个Resources文件最终都为Grails提供了一个“模块”闭包,Grails然后结合每个文件提供的闭包中的定义来生成最终配置。