【发布时间】:2012-07-09 10:29:20
【问题描述】:
我观看了 Paul Irish 宣布 Yeoman (www.yeoman.io) 的演讲,我迷上了运行连续构建环境的概念。不满足于等待 Yeoman 邀请,我尝试了 Grunt 和 Brunch。两者都易于安装,而且我可以毫不费力地启动和运行新项目。
我不明白如何将现有项目迁移到任一平台。我的项目使用单个命名空间并为模块使用两种约定(一个用于实例化另一个用于实用程序),每个约定都包含在导出到实例或命名空间的自执行匿名函数中。
我至少有 200 个模块和更多简单的辅助函数导出到命名空间;因此,使用控制台在 grunt/brunch 项目中创建这些,然后单独手动导入每个模块,这根本不是有效的。此外,我使用了至少 15 种不同的 3rd-party JavaScript 工具。我不清楚如何把这些带进来。
将现有的大型项目迁移到 Grunt/Brunch 中的最有效方法是什么?重构最少并支持任意 3rd 方工具?
更新:在两者中,我发现早午餐更容易应付。如果您使用股票“骨架”(即“模板”-从命令行{在您希望发生更改的文件夹中}执行“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”文件夹中时,您会得到一个自动编译的、实时的、随编辑的代码版本;但它无法访问。早午餐混淆了窗口对象,因此我对 window.myNameSpace 的初始命名空间声明失败,并且所有后续对该命名空间的库调用也失败。这与早午餐的模块系统有关,我找不到任何文档。
我通过将命名空间类放在“供应商”文件夹中解决了这个问题,确保它附加到窗口对象;但是,现在有一个竞争条件:我的命名空间并不总是可用于我的所有模块。
现在的问题是这样的:
将所有内部和外部库复制到 Brunch 项目后,如何配置应用以合理的顺序加载它们?
【问题讨论】:
标签: javascript node.js brunch gruntjs