在另一个browserify应用程序中包含已捆绑的文件

时间:2015-03-24 23:07:35

标签: javascript bower browserify

假设我有一个浏览器项目文件,如下所示:

// animals.js
var cow = require('./components/cow');
var donkey = require('./components/donkey');

然后用browserify构建并捆绑了

browserify animals.js > dist/build.js

然后尝试require将构建的文件放入另一个文件中:

// farm.js
var animals = require('./dist/build`);

Browserify讨厌这个,并在我尝试捆绑farm.js时抛出此类错误:

Error: Cannot find module './components/cow' from '/path/to/project/dist'

我该如何解决这个问题?用例是animals.js是通过bower包含在其他项目中的库。有些项目,如farm.js,使用browserify和debowerify,而其他项目则没有。

更新

我没有任何问题,包括另一个Webpack项目中的捆绑Webpack文件,所以我打算将所有捆绑包切换到那个。

1 个答案:

答案 0 :(得分:1)

Browserify包不是CommonJS模块,也不能直接导入。您必须编写一些Browserify转换或插件来解构捆绑包并找到您的模块,这可能会很棘手。


您的图书馆是否已捆绑在一起?通常我会将animals.js cow.jsdonkey.js作为普通.js文件留在项目中。 然后制作一个Bower包。这就是大多数其他凉亭包的设置方式。

您可以使用Debowerify使Browserify在Bower的包中查找模块,而不是仅在node_modules中查找模块。

然后您的其他应用可以bower install animals和:

var cow = require('animals/cow.js');