繁体   English   中英

如何使用最新的Browserify(6.xx)创建供应商捆绑包?

[英]How to create vendor bundles with latest Browserify (6.x.x)?

好吧,我们已经使用Browserify 2.x已有一段时间了。 我们正在进行一些重构,因此我们想尝试更新到最新的Browserify,以减少将来版本中的飞跃。

不幸的是,外部捆绑的处理方式发生了变化。 在旧版本中,我们可以简单地告诉Browserify将哪些模块排除在捆绑包之外,并从另一个模块中要求它们-基本上是这里描述的内容

从5.0.0版开始,Browserify内部发生了一些重大变化。 让我们以这个命令为例。 debug模块是NPM模块。

browserify -r debug -o vendor.js

在Browserify @ 4中运行此命令,输出文件如下所示:

require=(function... {
    "debug":[function(require,module,exports){
        module.exports=require('2Bvkwp');
    },{}],
    "2Bvkwp":[function(require,module,exports){
        // actual code from debug module
    },{}]
});

现在有了Browserify @ 5,它看起来像这样:

require=(function... {
    1:[function(require,module,exports){
        // actual code from debug module
    },{}]
});

为了完成方程式,我有一个简单的文件,其中包含require('debug') ,该文件与命令browserify -x debug -e index.js -o main.js捆绑在一起。 debug模块的内部相关性设置为undefined ,这很好。

如果您查看prelude.js文件,那么有一种逻辑可以简单地使用先前定义的全局require (存储在previousRequire变量中)来查找当前捆绑包中未定义的模块。 但是,由于vendor.js没有公开任何类似于debug模块的内容,因此无法成功。

我所能找到的就是变更日志中的这一行:

散列不见了,所以公开:执行多次导出捆绑交易时需要true或显式的公开ID

我找不到这实际上意味着什么:(

您应该能够像这样创建供应商捆绑包:

browserify -r debug > vendor.js

然后像这样创建您的应用程序包:

browserify index.js -x debug > main.js

这很好用(我正在使用browserify@6.1.0 )。

基本上,即使require('debug'); 将无法在浏览器控制台中工作,只要按正确的顺序加载捆绑包,browserify可以在供应商捆绑包中找到debug模块,即:

<script src="vendor.js"></script>
<script src="main.js"></script>

它不必将依赖项暴露给外部代码,而只需暴露给其他browserify捆绑包即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM