javascript - 为 JavaScript 构建过程工具

标签 javascript build continuous-integration

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

一些要求

我确实有一些基本要求(我以后可能会添加更多花里胡哨,但这些确实是必要的):
- 缩小代码:我希望在暂存/生产构建中使用这个选项非常激进(想想 Closure Compiler with advanced optimisations。)
- 代码质量检查:JSLint或类似的东西 - 抛出任何明显的代码问题。
- 单元测试:我非常喜欢JsTestDriver在单元测试 JS 方面 - 同时(并且快速!)测试多个浏览器和轻松自动化的能力是主要吸引力。也就是说,我很乐意寻找替代方案。
- 持续集成友好:我们使用 CI 服务器(BuildBot,作为记录),任何构建脚本都必须轻松自动化。

可能的解决方案

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

Ant

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

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

Ruby/Rake

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

缺点:
- 涉及修改构建过程的 Ruby 知识。虽然这不是什么大不了的事,但我们不是一家 Ruby 商店,替代品的进入阈值也不完全相同
- 很少有工具实际上在 Ruby 中运行,并且实际上是 Java 或 JavaScript 代码执行的包装器 - 这似乎可能会减慢速度

节点(可能类似于 Jake )

优点:
- JavaScript 中可用的大量工具(以及 Node 可用的模块) - JSLint/Hint、UglifyJS 等。
- 大概相当快(this blog post 说明了 UglifyJS 非常全面地超过了 Closure Compiler,例如)

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

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

最佳答案

项目完成后的简短跟进:

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

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

关于javascript - 为 JavaScript 构建过程工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719221/

相关文章:

javascript - JavaScript 中的函数指针

javascript - 使用 d3 同时用 .tween 过渡所有 div 元素

java - Docker compose构建相对路径

linux - 如果未安装,如何绕过 IncrediBuild 控制台?

javascript - 如何将我自己的方法添加到 HTMLElement 对象?

javascript - 如何在 then() 链中使用 promise.all

java - Maven 的 pom.xml 中的 pluginManagement 是什么?

android - 创建新项目时出现Android Build问题

java - 如何停止 CruiseControl 构建或更改配置以导致长时间运行的构建超时?

java - 用java管理预定的作业