构建JavaScript的流程工具

Phi*_*ose 13 javascript continuous-integration build

我正在开始一个新项目 - 一个相当大的应用程序 - 它只包含JavaScript代码(除了一些HTML/CSS),并且已经考虑了合适的构建过程和可用的工具选项.我很想听到最近有类似选择的人.

一些要求

我确实有一些必要的要求(我可能会在以后添加更多的花里胡哨,但这些确实是必要的):
- 缩小代码:我希望选择对于staging/production构建非常积极(想想Closure Compiler with高级优化.)
- 代码质量检查:JSLint或类似的东西 - 引起代码的任何明显问题.
- 单元测试:在单元测试JS方面,我非常偏爱JsTestDriver - 同时(快速!)测试多个浏览器并轻松实现自动化的能力是主要的吸引力.也就是说,我很乐意考虑其他选择.
- 持续集成友好:我们使用CI服务器(BuildBot,用于记录),任何构建脚本都必须易于自动化.

可能的解决方案

我已经想到了几种可能性(一些细节是猜测,请纠正我):

蚂蚁

优点:
- 似乎涉及最少的工作,尤其是因为优秀的HTML5 Boilerplate构建脚本作为起点
- 许多工具都是用Java编写的(或有包装器) - 包括JSLint/Hint,Closure Compiler和JsTestDriver
- Ant脚本是CI服务器的标准票价
- 快乐的跨平台

缺点:
- 运行许多JAR文件可能有点慢?(我在考虑初始化而不是执行)

的Ruby /耙

优点:
- (写得很好)Ruby脚本很可能比成堆的XML更好处理
- 许多相关工具都有包装器(通常是宝石),例如JSLint,JSTestDriverUglifyJS
- 同样跨平台

缺点:
- Ruby的知识涉及修改构建过程.虽然这不是一个大问题,但我们不是一个Ruby商店,并且替代品没有完全相同的进入障碍
- 很少有工具实际上在Ruby中运行,实际上是围绕Java或JavaScript代码执行的包装 - 这个看起来它可能会减慢速度

节点(可能像杰克一样)

优点:
- JavaScript中提供了大量可用的工具(以及Node可用的模块) - JSLint/Hint,UglifyJS等
- 大概很快(这个博客文章说明了UglifyJS非常全面地超越Closure Compiler)

缺点:
- 节点(特别是NPM)在Windows上似乎还没有(我们有一些运行Windows的开发人员)
- 似乎没有任何现有的支持从Node应用程序使用JsTestDriver(但可以写一个包装器)

基于此,Ant似乎是目前的最爱.

Phi*_*ose 5

现在项目已完成的简要跟进:

选择Ant来构建项目,但后来我希望我使用基于节点的解决方案.虽然你可以让Ant做大多数事情,但编写大量Java代码以使其做任何不寻常的事情通常都是冗长或必要的.在项目的整个生命周期中,节点和NPM在Windows上得到了显着改进,现在有很多测试解决方案(BusterJS最让我感兴趣)可以从Node脚本中轻松调用.

我很高兴看到Grunt的发布,这似乎对这样的项目特别有用.我很想听听人们使用这个工具的经验与合理大小的项目(作为参考,我刚刚完成的项目有大约120个JavaScript源文件.)


小智 5

一年后,但......

如果r.js + RequireJS是您的事情,并且您想要自动构建以及开发辅助/帮助,如linting,minification,concatenation,asset compilation等,请查看Mimosa.只需最少的配置,它就可以开箱即用.


ale*_*kop 4

我喜欢RequireJS进行依赖管理/动态脚本加载,以及构建单个文件。如需持续集成,请查看JetBrains 的TeamCity 。