我看着保罗爱尔兰的谈话,宣布约曼(www.yeoman.io),我上运行的持续构建环境的概念,大呼过瘾。没有满足于等待Yeoman邀请,我尝试了Grunt和Brunch。两者都可以轻松安装,我可以用最少的努力启动并运行新项目。导入现有的JavaScript项目成咕噜/早午餐项目
我不明白如何将现有项目迁移到任一平台。我的项目使用单个命名空间,并为模块使用两个约定(一个用于实例化另一个实用程序),每个模块都封装在导出到实例或名称空间的自执行匿名函数中。
我至少有200个模块和许多更简单,辅助函数出口的命名空间;因此使用控制台在grunt/brunch项目中创建这些控制台并单独手动导入每个模块并不十分有效。此外,我使用至少15种不同的第三方JavaScript工具。这是我不清楚如何将这些。
什么是采取一个大的,现有的项目,并将其与重构和支持的任意第三方工具的最低金额迁移到格朗特/早午餐最有效的方法是什么?
更新:这两个,我发现早午餐更容易应付。如果您使用库存“框架”(即“模板” - 从命令行{在您想要更改的文件夹中执行}执行“brunch new [project_name] --skeleton git://github.com/brunch /simple-js-skeleton.git“)为纯JS,你会得到一个新的文件夹结构,它实际上是相当敏感的。您在文件编辑时(当您运行“早午餐手表”时)会自动为您重新编译“应用程序”(您自己的代码)或“供应商”(第三方)文件夹。
这很好,除了。根据文档,您可以控制订单供应商脚本从Brunch config.coffee文件(JSON文本文件)编译和连接在一起。 对此文件所做的更改似乎没有效果,因此您最终会遇到期待其他插件的插件中的第三方争用条件。
此外,当你把你自己的代码到你得到一个自动编译,实时,随你编辑的版本代码的自动创建的“应用程序”文件夹;但无法访问。 Brunch混淆了窗口对象,所以我对window.myNameSpace的初始名称空间声明失败,并且对命名空间的所有后续库调用也失败。这与Brunch的模块系统有关,为此我找不到任何文档。
我解决了这个通过将我的名字空间类在“供应商”的文件夹,这保证它连接到窗口对象;然而,现在有一个竞争条件:我的命名空间并不总是适用于我所有的模块。
现在的问题是这样的:
一旦复制了所有内部和外部库的进入早午餐项目,你如何配置应用程序加载它们在一个健全的订单?
我对Brunch的理解是,它(至少似乎)需要CommonJS模块模式。我使用一个简单的(但在我的选择,非常优雅的命名空间模式)[见http://stackoverflow.com/questions/9072834/auto-generate-visual-studio-vsdoc-for-javascript-library和http:/ /jsfiddle.net/2gxYJ/1/],一旦库变大,实际上使转换到其他模块系统(RequireJS,CommonJS,AMD等)变得非常平常。所以,我转到了Grunt,它没有强加设计约束。 – Christopher 2012-07-15 01:58:37
由于1.4早午餐对于模块系统是不可知的,所以您甚至可以禁用模块。 – 2012-07-15 21:54:59
这很出色。唯一缺少的功能是JSHint支持。 Linting作为build/watch选项会很棒。 Grunt的配置还为您提供了一个jshint/uglifyjs对象来明确配置它们的行为。无论如何,早午餐的最大问题是模块要求,所以我一定会再次尝试。 – Christopher 2012-07-16 00:53:07