我正在开始一个新项目 - 一个相当大的应用程序 - 只包含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更好
- 许多相关工具都有包装(通常是宝石),例如JSLint,JSTestDriver和UglifyJS
- 同样跨平台
缺点:
- Ruby的知识涉及修改构建过程。虽然这不是一个大问题,但我们不是一个Ruby商店,并且替代品没有完全相同的进入障碍
- 很少有工具实际在Ruby中运行,实际上是围绕Java或JavaScript代码执行的包装 - 这似乎可能会减慢速度
赞成:
- JavaScript提供的大量工具(以及Node可用的模块) - JSLint / Hint,UglifyJS等。
- 大概相当快(this blog post说明UglifyJS非常全面地超越Closure Compiler,其中一个)
缺点:
- 节点(特别是NPM)在Windows上似乎还不存在(我们有一些运行Windows的开发人员)
- 似乎没有任何现有支持从Node应用程序使用JsTestDriver(但可以编写包装器)
基于此,Ant似乎是目前的最爱。
答案 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)
答案 3 :(得分:1)
有一个名为 gulp 的新构建工具,它使用节点流,因此它不必在步骤之间写入任何临时文件(如grunt)。这很快。