2014-10-08 70 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

相關問題