构建JavaScript的流程工具

时间:2011-10-10 22:05:15

标签: javascript build continuous-integration

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

一些要求

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

可能的解决方案

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

蚂蚁​​

赞成
- 似乎涉及最少的工作,尤其是因为出色的HTML5 Boilerplate build script作为起点 - 使用Java编写(或使用包装器)许多工具 - 包括JSLint / Hint,Closure Compiler和JsTestDriver
- 对于CI服务器,Ant脚本是标准票价 - 幸福的跨平台

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

红宝石/耙

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

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

节点(可能类似于Jake

赞成
- JavaScript提供的大量工具(以及Node可用的模块) - JSLint / Hint,UglifyJS等。 - 大概相当快(this blog post说明UglifyJS非常全面地超越Closure Compiler,其中一个)

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

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

4 个答案:

答案 0 :(得分:5)

项目完成后的简要跟进:

选择

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

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

答案 1 :(得分:5)

一年后,但是......

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

答案 2 :(得分:4)

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

答案 3 :(得分:1)

咕嘟咕嘟

有一个名为 gulp 的新构建工具,它使用节点流,因此它不必在步骤之间写入任何临时文件(如grunt)。这很快。