gpt4 book ai didi

javascript - 如何使用最新的 Browserify (6.x.x) 创建 vendor 包?

转载 作者:行者123 更新时间:2023-11-29 19:33:29 25 4
gpt4 key购买 nike

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

不幸的是,外部包的处理方式发生了变化。在旧版本中,我们可以简单地告诉 Browserify 将哪些模块排除在 bundle 之外,并从另一个模块中获取它们——基本上就是 described here。 .

从 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 模块的东西,它不可能成功。

我所能找到的只是更新日志中的这一行:

hashing is gone so expose: true or explicit expose id is required for doing multi-export bundles

我找不到这到底是什么意思:(

最佳答案

您应该能够像这样创建 vendor 包:

browserify -r debug > vendor.js

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

browserify index.js -x debug > main.js

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

基本上,即使 require('debug'); 在浏览器控制台中不起作用,browserify 也可以在 vendor bundle 中找到 debug 模块,只要包以正确的顺序加载,即:

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

它不必将依赖项暴露给外部代码,仅暴露给其他 browserify 包。

关于javascript - 如何使用最新的 Browserify (6.x.x) 创建 vendor 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26258423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com