2014-09-24 247 views
6

我試圖通過使用browserify-shim將某些模塊從包中提取出來來重構使用Browserify的庫。具體來說,該庫使用require(「codemirror」),但我想提供一個不包含CodeMirror的軟件包,而是使用通過CDN提供的軟件包。用browserify-shim實現依賴關係的勻場依賴關係

所以我有browserify-墊片配置在我的package.json像

"browserify-shim": { 
    "jquery": "global:jQuery", 
    "codemirror": "global:CodeMirror" 
    } 

到目前爲止好。 require('jquery')和require('codemirror')已從browserified bundle中消失,並被預期的代碼片段取代,以從窗口對象中獲取jQuery和CodeMirror。

該庫還需要一些CodeMirror附加組件。例如require('codemirror/addon/hint/show-hint.js')。沒關係。我希望將附加軟件捆綁在一起。但是,在這個附加組件中是一個包含require(「../../ lib/codemirror」)的UMD包裝器。由於這個(我認爲),Browserify看到了這個並且綁定了來自/node_modules/codemirror/lib/codemirror.js的CodeMirror。我想這樣使用代碼鏡像墊片中定義的window.CodeMirror,而不是找出它。已經嘗試了許多變化,包括以下內容:

"browserify-shim": { 
    "jquery": "global:jQuery", 
    "codemirror": "global:CodeMirror", 
    "../../lib/codemirror": "global:CodeMirror", 
    "codemirror/addon/hint/show-hint.js": { 
     "exports":null, 
     "depends":["../../lib/codemirror:CodeMirror"] 
    } 
    } 

這需要( 「../../ LIB/codemirror」)不會消失!我確定我錯過了一些東西。

我從一個Gulp腳本運行這個,但我不認爲這應該有所作爲。 Browserify版本3.38.1。 Browserify-shim版本3.7.0。

任何想法?

+0

看起來像browserify-shim可能是錯誤的方式去與此。 Browserify選項bundleExternal = false可能會解決問題。調查...... – 2014-10-09 12:06:46

+0

bundleExternal = false並不是完整的答案,因爲它留下了最初的「require」語句。因此,第一個示例中的browserify-shim仍然是需要的。但它有幫助。通過這個設置,我可以在綁定Gulp腳本以獲取附加組件之前直接.require('codemirror/addon/hint/show-hint.js'),但CodeMirror的外部需求將會被忽略。 – 2014-10-13 14:57:00

+0

在browserify的最新版本中看起來像是將{global:true}應用於browserify-shim轉換,這會導致它在依賴項上運行!這允許我們成功地填充require('../../ lib/codemirror')。 – 2014-10-15 18:34:12

回答

11

如果您將browserify-shim{global: true}一起添加,它也應該應用於您的依賴關係的依賴關係(依此類推),而這應該適用於您想要的。

假設你正在使用原始browserify在Gulpfile,而不是:

b.transform('browserify-shim'); 

做:

b.transform({global: true}, 'browserify-shim'); 

如果您使用gulp-browserify,我不知道是否有什麼辦法指定全局變換。

+0

這對我來說訣竅。謝謝! – poshaughnessy 2015-04-26 13:56:50

+0

謝謝!這也適用於我。 – 2015-07-13 11:08:27

-1
{global: true} 

適合我......爲什麼這不是默認?

+1

雖然此代碼可能回答此問題,但提供 有關_why_和/或_how_此代碼的其他上下文 回答此問題將會顯着提高其長期價值 。請[編輯]你的答案,添加一些 的解釋。 – 2016-03-17 18:28:10