2014-10-08 65 views
2

那么,现在我们一直在使用Browserify 2.x。我们正在经历一些重构,所以我们想尝试更新到最新的Browserify,以减少未来版本的飞跃。如何使用最新的Browserify(6.x.x)创建供应商捆绑包?

不幸的是,如何处理外部软件包有所改变。在旧版本中,我们可以简单地告诉Browserify哪些模块不在捆绑中并需要从另一个模块中获取 - 基本上是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模块,因此无法成功。

所有我已经能够找到的是该线路的changelog:

散列走了这么暴露:true或明确的暴露ID需要做多出口束

我我无法找到什么呢,实际上是指:(

回答

3

你应该能够创建您的供应商捆绑是这样的:

browserify -r debug > vendor.js 

然后创建你的应用程序包是这样的:

browserify index.js -x debug > main.js 

这只是正常(我使用[email protected])。

基本上,即使require('debug');不会在浏览器控制台工作,browserify只要能找到供应商捆绑的debug模块作为束以正确的顺序加载,即:

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

它不必将依赖项暴露给外部代码,而只暴露给其他浏览器包。

+0

是的,看起来他们终于修好了,感谢您的支持。 – FredyC 2014-10-28 06:49:05

相关问题