在我当前的 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]
我在这里做错了什么?
更新:
我不确定我是否正确理解了这一点。我尝试了以下方法,但也不起作用:
更新:
添加 ids 就可以了:)
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"
}
}
}
}
}
最佳答案
尝试在单独的文件中定义 dev 和 prod 资源模块。例如 StaticResources.groovy 和 ProductionResources.groovy。
Each Resources file ultimately provides Grails with one "modules" closure, Grails then combines the definitions from the closures provided by each file to produce the final configuration.
关于Grails 资源插件并根据环境使用不同的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15009767/