簡體   English   中英

您如何分支和開發全局安裝的Node.js NPM軟件包?

[英]How do you fork and develop a globally installed Node.js NPM package?

我正在嘗試為我更喜歡的NPM軟件包Wintersmith創建一個修復程序。 但是,Wintersmith應該是全局安裝的(可以通過wintersmith <command> ),我似乎無法從我在本地用git clone <my fork url>手動安裝的項目的根目錄運行它。 node ./node_modules/wintersmith/bin/wintersmith而未收到路徑錯誤:

module.js:340
throw err;
      ^
Error: Cannot find module '../lib/cli/'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (F:\web\wintersmith\node_modules\bin\wintersmith:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

我唯一能夠正確開發和測試此方法的方法是,用分叉版本手動替換全局安裝的Wintersmith軟件包,然后使用該版本執行命令以測試我的更改是否有效。

使用/開發全局NPM軟件包時,我缺少某些工作流程步驟嗎?

您應該使用npm install git://代替git clone

像這樣安裝你的叉子:

npm install git://github.com/YOURNAME/wintersmith.git

您也可以使用-g將其安裝為全局模塊:

npm install -g git://github.com/YOURNAME/wintersmith.git

NODE_PATH使用環境變量NODE_PATH 您可以在PATH之外使用它。

該文檔對其進行了更好的描述: http : //nodejs.org/api/modules.html#modules_loading_from_the_global_folders

我可以像這樣執行Wintersmith,而不必全局安裝它:

$ git clone https://github.com/jnordberg/wintersmith.git
$ cd wintersmith
$ npm install               # This installs all dependencies I need for the next step.
$ npm run-script prepublish # Run the prepublish script which compiles sources to ./lib
$ bin/wintersmith

當沒有任何內容作為參數傳遞時,我得到它給出的用法消息。

當創建要全局安裝的節點程序包時,可以並希望對其進行設計,以便無需安裝即可運行和測試。 我很驚訝溫特史密斯不會這樣設計。

一般而言,如果必須處理無法在不全局安裝的情況下進行測試的節點程序包,則將其稱為“有缺陷的”。 (也許有例外,但是這種例外很少見,應該在軟件包的文檔中加以說明。)

因此,通常來說,如果我不得不處理一個無法在全球范圍內安裝且無法運行和測試的軟件包,那么我會尋找一個具有等效功能的軟件包,而無需在全球范圍內安裝即可運行,或者修復有故障的軟件包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM