终极JS模块解决scheme与UMD的依赖?

我在CommonJS编写的一些需要高质量UMD包装的JavaScript模块上进行维护和协作。

依赖来自npm但至less有CommonJS和AMD支持(或者我可以添加它)。

CommonJS版本继续npm UMD包装模块将被推到bower

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

我已经花了很多时间在谷歌上search,但这是一个巨大的混乱。

一些有希望的人不会削减它(或者我错过了一些完全可能的东西):

  • browserify
  • gluejs
  • 咕噜-UMD

我到处都find这样的绝望构造: http : //rathercurio.us/building-umd-modules-with-dependencies-with-browserify ,但是我对这样的hackery并不是很酷。

任何好的提示呢? 我会采取任何指针或链接或提示。

编辑:澄清:最后一件事说,理想的解决scheme不应该要求我们手工组装大块的样板模板代码,并创build新的错误。 我冷静configuration和指定的东西虽然。

你的第一站也是最后一站应该是urequire.org ,通用模块转换器,它只是将CommonJS和AMD的JavaScript模块转换为UMD(或AMD或CommonJS或独立使用rjs /杏仁)。

它允许您在转换时操作Module的代码和依赖项:注入,replace或删除代码和依赖项,导出到全局对象( window )或您的包,注入和可选地合并通用代码(如初始化),添加运行时信息,多得多。

大部分使用简单但非常强大的声明和可选的callback进行细粒度的操作。 它可以与独立的configuration文件( .js.coffee.yml.yml等)配合使用,而且可以像gruntjsconfiguration一样使用

u需要从源代码模块编写的JavaScript,coffeescript,livingcriped,coco和冰封的脚本没有任何插件。

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

uRequire是开源的,MIT许可证,并在github上托pipe,由我撰写:-)