本地 npm install 不会创建指向 "bin" 可执行文件的符号链接

Local npm install doesn't create symlink to "bin" executables

如果我创建一个最小的 package.json 文件:

{
  "name": "cli-test",
  "version": "1.0.0",
  "bin": "index.js",
  "main": "index.js"
}

和一个 index.js 文件:

#!/usr/bin/env node
console.log("Hello")

和 运行 npm install,为什么 npm 不创建指向我的 index.js 文件的 ./node_modules/.bin/cli-test 符号链接? The package.json documentation 在 "bin" 上这样说:

On install, npm will symlink that file into prefix/bin for global installs, or ./node_modules/.bin for local installs.

如果我这样做 npm install -g,则会创建一个符号链接,但我不想进行全局安装。我正在使用节点 6.10.3 和 npm 3.10.10。还尝试使用 npm 5.0.4.

运行 npm install 在包目录中(这就是你正在做的)只安装包的依赖项,而不是包本身:

npm install (in package directory, no arguments):

Install the dependencies in the local node_modules folder.

(来自 npm help install

您引用的文档是指正在安装的包本身

我一般把可执行的脚本放在包目录的./bin中,这样我就可以直接执行它们,并从package.json:

中引用它们
"bin" : { "my-cool-cli" : "./bin/my-cool-cli" }