为了账号安全,请及时绑定邮箱和手机立即绑定

npm全局路径前缀

npm全局路径前缀

慕哥9229398 2019-09-19 10:29:10
我比平时更加谨慎,因为我npm对过去的行为感到困惑。我在Mac上,并通过安装的node.js brew install node。现在我想jslint.js在命令行上运行作为命令,jslint我发现完成此操作的规范方法是sudo npm install -g jslint使用此输出成功运行:$ sudo npm install -g jslintnpm http GET https://registry.npmjs.org/jslintnpm http 200 https://registry.npmjs.org/jslintnpm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgznpm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgznpm http GET https://registry.npmjs.org/noptnpm http 200 https://registry.npmjs.org/noptnpm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgznpm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgznpm http GET https://registry.npmjs.org/abbrevnpm http 200 https://registry.npmjs.org/abbrevnpm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgznpm 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.jsjslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint└── nopt@1.0.10 (abbrev@1.0.4)后来$ jslint ply.jszsh: 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获得的安装程序在系统上安装节点。我实际上比自制软件包本身更信任它,因为它最了解如何管理文件。如果要将系统节点从8.10更改为10.15,无论是在Mac还是Windows上,只需从nodejs.org为您的操作系统下载安装程序10.15。根据我的经验,尝试升级通过自制软件安装的节点一直被证明是一种更难的方法。另外,最重要的一点是,我在上面的jslint示例中显示的sudo的使用是非常不鼓励的; 我相当确定不应该使用超级用户以任何方式安装或交互自制程序包。它不应该是必要的,并将导致文件许可头痛!此外,我推荐ESLint而不是jslint,并且多年来没有使用过jslint。
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

扩展你PATH的:

这不是一个可怕的想法。话虽如此,你不应该这样做。

运行这个:

npm config get prefix

OS X上的默认值是/usr/local,这意味着npm将符号链接到二进制文件中/usr/local/bin,这应该已经存在PATH(特别是如果你使用的是Homebrew)。

所以:

  1. npm config set prefix /usr/local 如果它是别的东西,并且

  2. 不要sudo与npm一起使用!根据jslint文档,你应该能够做到npm install这一点。

如果您将npm安装为sudo(sudo brew install),请尝试使用plain ol'重新安装它brew install。Homebrew应该帮助你保持sudo自由。


查看完整回答
反对 回复 2019-09-19
?
波斯汪

TA贡献1811条经验 获得超4个赞

我使用brew,前缀已经设置为:


$ npm config get prefix

/Users/[user]/.node

我注意到bin和lib文件夹是root所有,这阻止了通常的非sudo安装,所以我将它们重新拥有给用户


$ cd /Users/[user]/.node

$ chown -R [user]:[group] lib

$ chown -R [user]:[group] bin

然后我刚刚添加了路径到我的.bash_profile,它位于/ Users / [user]


PATH=$PATH:~/.node/bin


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信