本地安装的node.js cli调用的行为与全局不同

时间:2014-09-10 05:19:18

标签: node.js command-line-interface

情形:

我写了一个cli脚本。它位于目录mycli中,名为mycli.js,并被标记为#!/usr/bin/env node。在项目package.json中,我添加了"name": "mycli", "bin": "mycli.js"

此时我可以通过两种方式从项目根调用mycli,可以是$ node mycli,也可以是$ mycli.js

发布到npm并在全球范围内安装此软件包之后,我现在可以从任何地方调用$ mycli$ node mycli,但是,本地安装并不会从其自己的项目根目录中显示相同的行为;我必须使用更合格的名称来调用脚本,可以是$ node_modules/mycli/mycli.js$ node node_modules/mycli/mycli

为什么没有$ node mycli在本地情景中工作?

1 个答案:

答案 0 :(得分:3)

请查看以下答案:How to use package installed locally in node_modules?

基本上,当您全局安装软件包时,将找到可执行文件,因为它位于PATH中。默认情况下,node_modules目录不在您的PATH中。将系统上的每个node_modules目录添加到PATH会变得非常混乱。

您可以使用echo $PATH检查当前路径。您可以使用PATH=$(npm bin):$PATH添加本地node_modules目录(对于会话的生命周期)。链接的答案还有一个替代使用别名。