如何将本地节点包放在路径上?

时间:2015-01-27 00:39:18

标签: node.js macos npm

新手问题。我选择不使用-g选项安装express。我没有使用npm -g将全局放在路径上。相反,它安装在我的本地mac用户目录中。我不清楚的是,究竟是什么或如何在路径上放置像express这样的包,以便可以调用它等等?路径上究竟需要什么(node_modules?)所以这些包就像-g安装一样可用?我本可以使用家酿,但无论如何,我现在拥有所有节点包和一切本地。另一种情况是我无法运行任何nodejs教程。虽然可能有更聪明的方法来做到这一点,但我想知道sudo是否真的是安装开发包的好方法....

现在,例如,我想运行教程javascripting,这是一个nodejs教程。我该怎么做呢。如果我输入: Mac1 $ javascripting

它一无所获。

同样的 Mac1 $ express

更新:评论中已经回答了这个问题

命令存在于常规

之后的隐藏目录中
    install npm install express 

在我的情况下,这个命令在这里:/users/MAC1/node_modules/.bin

这条路径需要放在$ PATH上,如第一条评论所述。

谢谢你们。

1 个答案:

答案 0 :(得分:1)

npm安装可执行到两个地方。默认情况下,在项目中运行npm install将在./node_modules/.bin中安装任何二进制文件。当您使用-g标志(npm install -g package-name)时,它将安装到全局路径中。您可以通过运行npm bin -g找到全局路径。将其添加到您的路径中,可以访问全局安装的可执行文件。

您还可以在路径中添加./node_modules/.bin,以便轻松访问项目文件夹中的包添加的可执行文件。我承认在可信赖的本地计算机上使用此功能。但是,这是非常危险的,并且不是推荐的方式来公开node_modules目录中的可执行文件。

最好的选择是将可执行文件添加到package.json文件的scripts section,然后使用npm run-script <command>,这将在执行时自动添加./node_modules/.bin

的package.json
{
  "scripts": {
    "foo": "foo --arguments"
  }
}
$ npm install foo
$ ls ./node_modules/.bin
foo
$ npm run-script foo
# Executes:
./node_modules/.bin/foo --arguments