繁体   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