2013-11-27 144 views
1

我在CommonJS编写的一些需要高质量UMD包装的JavaScript模块上进行维护和协作。具有依赖关系的UMD Ultimate JS模块解决方案?

依赖关系源自npm,但至少支持CommonJS和AMD(或者我可以添加它)。

的CommonJS的版本的推移npm的UMD包装的模块将被推到bower

的包装必须工作在浏览器(AMD +全局),并在Node.js的(任何和其他CommonJS的系统如果可能的话)。任何自动化应该最好使用Grunt(我在grunt中非常方便)发生。

我已经花了不少时间去搜索谷歌,但它是一个巨大的混乱。

一些希望那些不太削减它(或者我失去了一些东西,这是完全可能的):

  • browserify
  • gluejs
  • 咕噜-UMD

我在这里找到了像这样绝望的结构:http://rathercurio.us/building-umd-modules-with-dependencies-with-browserify,但我对这样的骇客并不是很酷。

对此有什么好的提示?我会采取任何指针或链接或提示。

编辑:澄清:最后一件事说,理想的解决方案不应该要求我们手工组装大块样板模板代码并创建新的错误。我很喜欢配置和指定的东西。

回答

2

您的第一站也是最后一站应该是urequire.org,这是通用模块转换器,它只是将CommonJS和AMD javascript模块转换为UMD(或AMD或CommonJS或使用rjs/almond的独立设备)。

它允许您操作模块的代码和相关性,同时转换:注入,替换或删除代码和依赖,出口到全球的对象(window)或你的包,注入&可选合并通用代码(如初始化),添加运行时信息,缩小和更多。

其中大部分使用简单但非常强大的声明&可选回调细粒度操作。它与独立的配置文件(.js.coffee.json.yml等),按原样作为gruntjs config

uRequire从JavaScript编写的源模块编译,CoffeeScript的,livescriped,可可& icedcoffeescript没有任何插件。

忘记样板,代码仪式和重复要求。转换模板基于众所周知的UMDjs,但可以通过声明进行定制以隐藏或提供功能。

uRequire是开源的,MIT许可证和hosted on github和我:-)

+0

HTTP着:// urequire。组织/做出一些大胆的声明:)但假设它交付它可能是一个很好。你是否还支持源代码映射(包括转换/合并?)我使用TypeScript和'grunt_concat_sourcemap'很多(都生成映射),当然更愿意调试原始源代码,即使在将它们取回到AMD之后也是如此。 – Bartvds

+0

好吧,如果它提供了:-) uRequire开始作为一个简单的转换AMD到UMD的宠物项目,但是许多功能都是在将它转换成可以执行90%常见任务的工具之后添加的可以在一个典型的grunt文件中找到,只有[10%的努力和样板](http://urequire.org/masterdefaultsconfig.coffee#examples)。不幸的是,源代码和TypeScript是两个功能,它还没有触及,但应该:-( –

+0

我真的很喜欢UMD的功能,它是非常酷的技术。只有我总是倾向于使用我自己选择的(typescript)编译器(这里grunt -ts)对于一个高级用户来说,一个特定的人将会拥有更多的功能,然后是一个通用的捆绑版本(“做一件事,做得很好”)。但是源代码生成(和转换)几乎是现在需要的。我们还将如何调试生成的代码?通过手动从bundle中查找,通过我们曾经到过的任何管道进行查找?那是2010 :) – Bartvds

相关问题