3

在我当前的 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 可以解决问题:)

应用资源.groovy

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

开发资源.groovy

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

1 回答 1

6

尝试在单独的文件中定义 dev 和 prod 资源模块。像 StaticResources.groovy 和 ProductionResources.groovy。

每个 Resources 文件最终都会为 Grails 提供一个“模块”闭包,然后 Grails 将每个文件提供的闭包中的定义组合起来以生成最终配置。

这是完整的 nabble 讨论

于 2013-02-22T06:05:32.373 回答