Node.js 用于Bower和npm的相同模块/包

Node.js 用于Bower和npm的相同模块/包,node.js,module,package,npm,bower,Node.js,Module,Package,Npm,Bower,有没有一种方法可以编写一个单个模块/包,既可以发布到npm也可以发布到Bower,而不必复制文件 假设您有一个简单的JS文件,其中包含一些自包含的代码(即,它没有任何外部依赖项) 理想的目录如下所示: /file.js /package.json /bower.json 本例中的问题是,“file.js”要与npm一起使用需要一个module.exports语句,而这不适用于Bower 那么,有没有办法避免生成两个几乎完全相同的文件呢?这似乎是目前为止最好的选择(灵感来自Angular团队)

有没有一种方法可以编写一个单个模块/包,既可以发布到npm也可以发布到Bower,而不必复制文件

假设您有一个简单的JS文件,其中包含一些自包含的代码(即,它没有任何外部依赖项)

理想的目录如下所示:

/file.js
/package.json
/bower.json
本例中的问题是,“file.js”要与npm一起使用需要一个
module.exports
语句,而这不适用于Bower


那么,有没有办法避免生成两个几乎完全相同的文件呢?

这似乎是目前为止最好的选择(灵感来自Angular团队)

在项目根目录中创建一个包含以下内容的
index.js
文件:

module.exports = require('your-original-module.js');
然后,在
package.json
中添加以下行:

"main": "index.js",

简单,但有效

如果您的模块不依赖于其他npm模块, 您可以使用

将实用程序作为全局变量公开

然后使用为浏览器打包代码:

src: 'bowerify.js',
dest: 'my_bower_module.js'
现在,您可以使用bower安装my_bower_module.js

src: 'bowerify.js',
dest: 'my_bower_module.js'