假设我有一个浏览过的项目文件,如下所示:
// animals.js
var cow = require('./components/cow');
var donkey = require('./components/donkey');
然后构建并与浏览捆绑在一起
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文件,所以我计划将我所有的捆绑包都切换到那个。
Browserify bundle不是CommonJS模块,不能直接导入。你必须编写一些Browserify转换或插件来解构捆绑包并定位你的模块,这可能很棘手。
您的库是否有要捆绑?通常,我只会将animals.js
、cow.js
和donkey.js
作为普通.js文件留在项目中。然后用它做一个鲍尔包。这就是大多数其他bower软件包的设置方式。
您可以使用Debowerify使Browserify也可以在Bower的包中查找模块,而不仅仅是在node_modules中。
然后您的其他应用程序可以bower install animals
和:
var cow = require('animals/cow.js');