您如何分叉和开发全球安装的Node.js NPM包?

时间:2014-01-25 13:19:34

标签: javascript node.js npm

我正在尝试为我喜欢的NPM包创建修复程序,Wintersmith。但是,Wintersmith应该是全局安装的(可以用wintersmith <command>执行),我似乎无法从我在本地手动安装git clone <my fork url>的项目的根目录运行它,例如{ {1}}没有收到路径错误:

node ./node_modules/wintersmith/bin/wintersmith

我可以想象正确开发和测试它的唯一方法是用我的分叉版本手动替换我全局安装的Wintersmith软件包,然后使用该版本执行命令来测试我的更改是否正常工作。

在使用/开发全球NPM包时,是否存在一些我缺少的工作流程步骤?

3 个答案:

答案 0 :(得分:1)

您应该使用npm install git://代替git clone

像这样安装你的分支:

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

您也可以将其安装为全局模块使用-g

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

答案 1 :(得分:0)

NodeJS吃环境变量NODE_PATH。除PATH之外,您可以使用它。

本文档更好地描述了它: http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

答案 2 :(得分:0)

我可以像这样执行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

当没有任何内容作为参数传递时,我得到了它给出的用法消息。

创建一个全局安装的节点包时,可以设计理想,以便无需安装即可运行和测试。我对Wintersmith不会这样设计感到惊讶。

一般来说,如果我不得不处理一个未经全球安装而无法测试的节点包,我称之为“有缺陷”。 (也许有例外,但这种例外情况很少见,并且应该在软件包的文档中证明这一点。)

因此,通常情况下,如果我不得不处理无法在全局安装而无法运行和测试的软件包,我会寻找一个提供等效功能的软件包,可以运行而不安装全局,或修复故障包。