为JavaScript构建过程工具
Build process tools for JavaScript
我正在开始一个新项目-一个相当大的应用程序-功能只有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)。这是快。
- 为effect Composer创建GodRays效果过程
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 删除CKEditor工具栏按钮,但不删除功能
- d3.js Chord图的动态工具提示
- jQuery工具验证器自定义效果-添加&消除影响
- Graphiti中是否有任何工具提示功能
- "工具提示"jQuery插件坏了
- 单元格的工具提示或标题不显示超过2000个字符
- 用于高级文本的格式化工具
- d3.js用按钮更新条形图工具提示
- 克隆和恢复”;工具化的“;元素
- 使Intro.js工具提示响应
- 画布中绘制的矩形区域的弹出工具提示
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- 有什么工具可以轻松读取javascript代码吗
- 如何使用ReSharper自定义HTML工具进行JavaScript测试
- 重构 javascript 部分以运行的过程或工具
- 为JavaScript构建过程工具