TLDR;我的問題是:有沒有一種方法可以讓browserify NOT override require
具有自己的實現,而是使用不同的方法名稱(例如browserifyRequire
)滿足其自身的內部需求。要找出爲什麼我需要這樣做,請繼續往下看......使用Browserify爲CasperJS + SlimerJS打包代碼?
我試圖使用CasperJS和SlimerJS運行他們一些自動化測試寫的情景 - 而不是默認的PhantomJS (儘管我知道,我會碰到與PhantomJS相同的以下問題)。
我真的想弄清楚如何在CoffeeScript中編寫這些代碼。事實證明,現在CasperJS或SlimerJS在CoffeeScript上做得並不好。文檔的建議是在運行casper之前編譯爲JS。好的...不是很方便,但我可以處理它。事實上,我還發現require
解決這些工具中的路徑並不像在Node中那樣簡單,所以在運行之前捆綁也應該有幫助。
但是現在我在嘗試運行捆綁代碼時遇到了一系列新問題。我正在使用Browserify。
的問題
在我的測試代碼,我需要require('casper')
。 CasperJS世界的標準做法。所以我必須告訴瀏覽不要綁定CasperJS,把"browser": { "casper": false }
放在我的package.json
。到目前爲止沒有probs。但問題來了:
Browserify覆蓋了內置的require
函數,它提供了它自己的require
的實現,它可以完成所有使得瀏覽工作的事情。 CasperJS很好,直到它遇到require('casper')
指令。這是CasperJS必須執行require
'ing,而不是browserify。那失敗了。
的不完整的解決方案
我敢肯定那只是CasperJS無法處理與Browserify覆蓋require
,因爲CasperJS實現自己require
ING方式的事實。爲了測試該假設,我手動編輯了結果包,將require
的每次重命名重命名爲browserifyRequire
- 包括browserify的require
的實現。我唯一保留的require
是撥打require('casper')
,因爲那是我需要CasperJS來處理require
ing的一次。事實上,這使事情按預期工作。
問題
再次,有沒有一種方法,使browserify使用不同的名稱爲自己的內部require
?我想我可以在捆綁後編寫一個腳本來做這個改變,但我更想知道如何通過配置來實現這一點。
替代的問題
的也許不是Browserify有捆綁和運行CoffeeScript的內部CasperJS另一種解決辦法?我還沒有找到一個....