我们希望在构建过程中使用 Google Closure,如下所示:
- 在开发模式下,包括 BASE .js并动态添加脚本标记
- 在生产中,使用缩小和所有其他冷却的东西
这是一个在Tomcat上运行的Java项目,我们正在从Maven过渡到Gradle,并使用Jenkins设置了持续集成。我们使用Apache Tiles作为前端技术。
我想出了一个可能的解决方案,但我觉得它又痛苦又丑陋,想知道是否有更好(更干净、更简单等)的解决方案。
我的臭解决方案:
使用 Tomcat 上下文参数来标识生产模式。在 JSP 文件中,检查此变量并相应地包含 Closure 的基.js或缩小的 js 文件。
那么......还有其他建议吗?可能有优点/缺点?
我为此使用Grunt。Grunt 是一个自动化前端缩小、编译、单元测试等的工具。
网址: http://gruntjs.com/getting-started
在 Grunt 中,您可以创建一个 Gruntfile 并注册一个由一个或多个可重用配置组成的任务。配置的作用类似于:"缩小此目录中的所有文件并输出到该文件"。因此,您要做的是注册两个任务:一个用于开发,一个用于生产,具有一些通用的配置,以及一些专门针对该环境的配置。
您可以将 Tomcat 上下文参数作为参数(最干净)传递给 Grunt,或者将其作为 Gruntfile 中的环境变量读取并在配置中创建 if 分支。
Grunt 有很多插件:您需要的插件已经可用:
- 有条件地包含/排除文件:本机支持
- 生成脚本标记:https://github.com/Zolmeister/grunt-sails-linker
- 谷歌闭包编译器:https://github.com/gmarty/grunt-closure-compiler 或 https://github.com/blaise-io/grunt-gcc-rest