我比以往更加谨慎,因为我npm
对过去的行为感到困惑。
我在Mac上,并通过安装的node.js brew install node
。
现在,我想jslint.js
在命令行中作为命令运行,jslint
我发现完成此操作的规范方法是sudo npm install -g jslint
成功运行此输出的:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
后来
$ jslint ply.js
zsh: command not found: jslint
由于/usr/local/share/npm/bin
没有在我的身体里$PATH
。
1)为什么没有brew
安装全局npm
bin
路径到路径?也许是的,但是zsh
确实有一些事情弄糟了。我在哪里可以找到?
2)我应该这样做吗?(附加:/usr/local/share/npm/bin
到$PATH
我底部的~/.zshrc
)
看来这不是正确的方法,因为如果以后再安装其他东西(使用Homebrew或其他方式),则需要将其附加到我的zsh启动脚本中以设置路径。我猜在这种特殊情况下,这只是npm install -g
在“适当”位置(例如/usr/local/bin
可能)未正确建立符号链接的问题。
我想我会做的是在/usr/local/bin
遇到问题的任何程序中手动建立符号链接,对于我的目的来说应该足够好了。
编辑:我将在2019年对此进行更新,因为这个老问题很受欢迎,但就我个人的工作流程以及如何最好地安装节点并管理其各种依赖关系而言,现在已经过时了。
我现在的个人工作流程是使用从nodejs.org获得的安装程序在系统上安装node。实际上,我比自制软件包本身更信任此文件,因为它最了解如何管理文件。如果要将系统节点从8.10更改为10.15,无论是在Mac还是Windows上,只需从nodejs.org下载适用于OS的10.15的安装程序即可。根据我的经验,尝试升级通过自制程序安装的节点一直是比较困难的方法。
另外,需要指出的最大问题是,强烈建议不要使用sudo,如我上面的jslint示例的npm安装中所示。我相当确定,决不能使用超级用户以任何方式来安装或自制软件包。不必要,这会导致文件许可问题!
此外,我推荐使用ESLint而不是jslint,并且多年来没有使用过jslint。