我一直在追赶现代客户端 JS 生态系统,并阅读了 CommonJS 和 AMD 等模块系统(包括相关工具 - browserify、requirejs、onejs、jam,以及其他许多工具)。如果我正在编写一个 Javascript 库,我如何打包它以使其可以被最广泛地访问(理想情况下是那些对 CommonJS、AMD 尤其是两者都发誓的用户)?
像 jQuery 这样的流行库似乎只是使用老式文件连接来构建自身并动态检测它是否应该写入导出或全局上下文。我目前正在做同样的事情,但主要的缺点是如果我(与 jQuery 不同)依赖于一些库,那么不必要求用户手动预包含传递集是很好的。(虽然我目前只有两个依赖项。)当然还有全局命名空间污染。
或者,为每个上下文生成多个版本的库可能是最干净的?
这也会影响包装和出版。有几个系统,但我相信主要的一个是 bower,它很容易处理,因为它所做的只是获取。但是,如果我想将其打包成组件,则需要一个 CommonJS 模块。
还有其他我应该注意的相关方面吗?对于所有这些,是否有任何好的示例项目可以遵循?