为JavaScript构建过程工具

Build process tools for JavaScript

本文关键字:工具 过程 构建 JavaScript      更新时间:2023-09-26

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

一些需求

我确实有一些必要的要求(稍后我可能会添加更多的花里胡哨的东西,但这些确实是必要的):
- 代码的缩减:我希望这个选项对于阶段/生产构建来说是非常积极的(考虑具有高级优化的闭包编译器)
- 代码质量检查: JSLint或类似的-抛出代码中任何明显的问题。- 单元测试:当涉及到JS单元测试时,我对JsTestDriver有很强的偏好——同时测试多个浏览器的能力(而且很快!)和容易自动化是主要的吸引力。也就是说,我很乐意寻找其他选择。- 持续集成友好:我们使用一个CI服务器(BuildBot,记录),任何构建脚本都必须很容易自动化。

可能的解决方案

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

蚂蚁

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

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

Ruby/耙

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

缺点:
熟悉Ruby以修改构建过程。虽然这不是什么大事,但我们不是Ruby商店,其他选择也没有同样的进入障碍
-很少有工具实际上是在Ruby中运行的,实际上是围绕Java或JavaScript代码执行的包装-这似乎会减慢事情的速度

Node(可能是Jake之类的)

优点:
- JavaScript中有大量可用的工具(以及Node可用的模块)- JSLint/Hint, UglifyJS等-大概相当快(这篇博文举例说明了UglifyJS相当全面地超过了Closure Compiler)

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

基于此,Ant似乎是目前最受欢迎的。

项目完成后的简短跟进:

选择了

Ant来构建项目,但后来我希望使用基于node的解决方案。虽然您可以让Ant做大多数事情,但是为了让它做一些不同寻常的事情,编写大量Java代码通常是冗长的或必要的。Node和NPM在整个项目的生命周期中在Windows上得到了显著的改进,现在有大量的测试解决方案(我最感兴趣的是BusterJS)可以很容易地从Node脚本中调用。

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

一年多过去了,但是…

如果r.js + RequireJS是你的东西,你想要自动构建和开发辅助/帮助,如检查,缩小,连接,资产编译等,看看Mimosa。它可以用最少的配置来做很多事情。

我喜欢RequireJS用于依赖管理/动态脚本加载,以及构建单个文件。

有一个新的构建工具叫做gulp,它使用节点流,所以它不需要在步骤之间写入任何临时文件(像grunt)。这是快。