在另一个可浏览的应用程序中包含已绑定的文件

Include an already bundled file in another browserify app

本文关键字:包含 绑定 文件 应用程序 另一个 浏览      更新时间:2023-09-26

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

// 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.jscow.jsdonkey.js作为普通.js文件留在项目中。然后用它做一个鲍尔包。这就是大多数其他bower软件包的设置方式。

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

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

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