具有依赖性的UMD终极JS模块解决方案?

时间:2013-11-27 19:40:59

标签: javascript node.js module amd commonjs

我维护和协作一些用CommonJS编写的JavaScript模块,这些模块需要高质量的UMD包装器。

依赖项来自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,但我对这样的hackery并不是很酷。

有什么好的提示吗?我会接受任何指针或链接或提示。

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

1 个答案:

答案 0 :(得分:2)

你的第一站和最后一站应该是urequire.org,通用模块转换器可以做更多的事情,只需将CommonJS和AMD javascript模块转换为UMD(或AMD或CommonJS或使用rjs / almond独立)。

它允许您在转换时操纵Module的代码和依赖项:注入,替换或删除代码和依赖项,导出到全局对象(window)或您的bundle,inject&可选地合并公共代码(如初始化),添加运行时信息,缩小等等。

大多数使用简单但功能强大的声明&可选的回调用于细粒度操作。它适用于独立配置文件(.js.coffee.json.yml等)和原样gruntjs config

uRequire从javascript编写的源模块编译,coffeescript,livescriped,coco&没有任何插件的icedcoffeescript。

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

uRequire是opensource,MIT许可证和hosted on github并由我撰写: - )