繁体   English   中英

npm install vs sudo npm install -g

[英]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-climochajson 为了在任何地方使用它们,您需要全局安装它们,因此需要-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM