2013-03-07 161 views
1

我已經安裝了摩卡全球,並用它來運行一些測試:如何在node.js中修補環境模塊?

$> mocha test.js 

在test.js文件的根我想猴子補丁摩卡:

require('mocha').Runner.prototype.runTests = function() {...} 

但需要(「摩卡」 )失敗,因爲mocha不在node_modules中,而是全局安裝。

如果我在我的項目中本地安裝mocha,然後require('mocha')找到它,但它與用於執行的環境模塊不同,因此該補丁不好。

如果我從本地存儲庫,而不是全局的運行摩卡然後一切工作正常:

$> ./node_modules/mocha/bin/mocha test.js 

,但是我想從全球運行的倉庫摩卡。任何想法?

編輯:我放棄了嘗試訪問全球摩卡模塊,它似乎在本地運行摩卡,並要求它在本地足以勝任my use case

+0

請閱讀http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/和http://blog.nodejs.org/2011/04/ 06/npm-1-0-link /。另外,你真的想完成什麼? – 2013-03-07 23:39:42

+0

'要求('摩卡')'如果摩卡裝載全球作品。摩卡是否被安裝爲依賴項? – 2013-03-07 23:44:03

+0

@BenjaminGruenbaum我熟悉這些帖子。我不想告訴摩卡不要進行一些測試。但我有自己的邏輯來做到這一點,所以這需要侵入性。但是我儘量避免直接更改摩卡代碼,以便我可以獲得它的未來版本。 – 2013-03-07 23:47:05

回答

0

鑑於npm root -g告訴你,所有的全球節點模塊的安裝目錄(/usr/local/lib/node_modules我的機器上),你可以傳遞一個絕對路徑require,就可以做到這一點:

var mocha = require("/usr/local/lib/node_modules/mocha"); 

此負載摩卡的全球安裝。