与Bower和npm相同的模块/包

有没有办法编写一个单独的模块/包,可以发布到npmBower ,而不必重复文件?

想象一下,你有一个简单的JS文件,其中包含一些独立的代码(即它没有任何外部依赖)。

一个理想的目录看起来像这样:

/file.js /package.json /bower.json 

在这种情况下,问题是“file.js”与npm一起工作将需要一个module.exports语句,而这不适用于Bower。

那么,有没有办法避免产生两个单独的几乎相同的文件?

这似乎是迄今为止最好的select(由Angular团队启发)。

在项目根目录下创build一个index.js文件,内容如下:

 module.exports = require('your-original-module.js'); 

然后,在package.json添加这一行:

 "main": "index.js", 

简单,但有效!

如果你的模块不依赖于其他npm模块,你可以提供文件(可以称之为“bowerify.js”)

 window.MyUtility = require('./file'); 

将公用事业公开为全局variables。

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

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

现在,您可以使用bower安装my_bower_module.js。