![](/img/trans.png)
[英]Unforseen errors when running sudo npm install -g @vue/cli
[英]npm install vs sudo npm install -g
对于某些软件包,我必须运行sudo npm install -g
而对于其他软件包, npm install
就足够了。
为什么和有什么区别?
例如:
npm install -g grunt-cli # doesn't work
sudo npm install -g grunt-cli # works
npm install websocket-stream # works
只有-g
标志才需要sudo
吗?
npm
在本地安装包,即。 在当前文件夹中的node_modules
文件夹中。 这允许您的应用程序依赖于特定的软件包版本,而不必弄乱系统上已安装软件包的全局列表。 请参阅Isaac博客文章的第一段(同时处理同一事物的多个版本 ),这很好地解释了npm
如何避免在其他编程生态系统中经常遇到的依赖性。
另一方面,一些包用作命令行实用程序,例如grunt-cli
, mocha
或json
。 为了在任何地方使用它们,您需要全局安装它们,因此需要-g
参数。
请注意,您不需要sudo
来安装全局包,请参阅此相关答案以获取更多信息。
-g
是全局的,不需要在本地安装软件包。
您使用sudo运行它,因为它安装到默认情况下默认用户可能无法访问的文件夹。
npm install -g grunt-cli
在全局模式下安装软件包,每个用户都可以使用它。 如果没有-g
,只需将其安装在当前目录中即可。 如果您不是root用户,则需要使用sudo
作为-g
。 如果您使用不带-g
npm
并且您对当前目录具有写权限,则不需要sudo
。 否则,你仍然需要它。
grunt-cli
将提供一个可放入PATH
的可执行文件,因此根据您配置系统的方式,它将需要root访问权限。
请参阅npm creator上的这篇文章 ,特别是关于在npm中使用sudo的部分。
websocket-stream
是一个库,您的代码将使用它,因此执行某些任务会更容易,通常它将安装在项目的根目录下的node_modules
文件夹中。
看起来像权限问题。 -g全局安装(你需要'root'),但以root身份安装它并不是一个好主意在终端运行中:
sudo chown -R `whoami` ~/.npm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.