我观看了 Paul Irish 宣布 Yeoman (www.yeoman.io) 的演讲,我迷上了运行连续构建环境的概念。不满足于等待 Yeoman 邀请,我尝试了 Grunt 和 Brunch。两者都易于安装,我可以轻松启动和运行新项目。
我不明白如何将现有项目迁移到任一平台。我的项目使用单个命名空间并为模块使用两种约定(一个用于实例化另一个用于实用程序),每个约定都包含在导出到实例或命名空间的自执行匿名函数中。
我至少有 200 个模块和更多简单的辅助函数导出到命名空间;因此,使用控制台在 grunt/brunch 项目中创建这些,然后单独手动导入每个模块,这根本不是有效的。此外,我使用了至少 15 种不同的 3rd-party JavaScript 工具。我不清楚如何把这些带进来。
以最少的重构量和对任意 3rd 方工具的支持,将现有的大型项目迁移到 Grunt/Brunch 的最有效方法是什么?
更新:在两者中,我发现早午餐更容易应付。如果您使用股票“骨架”(即“模板”-从命令行{在您希望更改发生的文件夹中}执行“brunch new [project_name] --skeleton git://github.com/brunch /simple-js-skeleton.git") 对于纯 JS,你会得到一个新的文件夹结构,它实际上是非常敏感的。您放入“app”(您自己的代码)或“vendor”(第 3 方)文件夹的任何内容都会在文件编辑时自动为您重新编译(当您运行“brunch watch”时)。
这很棒,除了。根据文档,您可以控制从 Brunch config.coffee 文件(JSON 文本文件)编译和连接供应商脚本的顺序。对此文件的更改似乎没有任何效果,因此您最终会遇到来自期望其他插件的插件的第 3 方竞争条件。
此外,当您将自己的代码放入自动创建的“app”文件夹中时,您确实会得到一个自动编译的、实时的、随编辑的代码版本;但它无法访问。Brunch 混淆了 window 对象,因此我对 window.myNameSpace 的初始命名空间声明失败,并且对命名空间的所有后续库调用也失败。这与早午餐的模块系统有关,我找不到任何文档。
我通过将命名空间类放在“供应商”文件夹中解决了这个问题,确保它附加到窗口对象;但是,现在有一个竞争条件:我的命名空间并不总是可用于我的所有模块。
现在的问题是这样的:
将所有内部和外部库复制到 Brunch 项目后,如何配置应用程序以合理的顺序加载它们?