当前位置: 首页 > 面试题库 >

Windows上的全局npm安装位置?

轩辕实
2023-03-14
问题内容

我不确定100%,但是我相信我是从家用计算机和办公室PC上的Windows安装程序安装了节点v5。

在我的家用PC上,全局安装发生在%APPDATA%下:

(dev) go|c:\srv> which lessc
c:\users\bjorn\appdata\roaming\npm\lessc
c:\users\bjorn\appdata\roaming\npm\lessc.cmd

在我的办公室PC上,它们位于程序文件下:

(dev) go|w:\srv> which lessc
c:\program files\nodejs\lessc
c:\program files\nodejs\lessc.cmd

我需要为PyCharm的文件监视程序提供许多这些全局工具的完整路径,并且由于我共享的项目文件很有意义,因此在用户文件夹下没有全局资源。

为什么全局安装最终会位于不同的文件夹中,我如何将它们强制安装到所有团队成员都公用的位置?


问题答案:

根据:https :
//docs.npmjs.com/files/folders

  • 本地安装(默认):将内容放入当前软件包根目录的./node_modules中。
  • 全局安装(带-g):将内容放入/ usr / local或安装节点的任何位置。
  • 如果您需要require(),请在本地安装。
  • 如果要在命令行上运行它,请全局安装它。->如果两者都需要,则将其安装在两个地方,或使用npm链接。

前缀配置

前缀config默认为节点安装的位置。在大多数系统上,这是/usr/local
在Windows上,这是node.exe二进制文件的确切位置

这些文档可能有些过时了,但是它们解释了为什么全局安装可以最终位于不同的目录中:

(dev) go|c:\srv> npm config ls -l | grep prefix
; prefix = "C:\\Program Files\\nodejs" (overridden)
prefix = "C:\\Users\\bjorn\\AppData\\Roaming\\npm"

根据其他答案,替代似乎现在是Windows上的默认位置,并且在实施替代之前我可能已经安装了Office版本。

这也提出了一种解决方案,使所有团队成员将全局变量存储在相对于其PC的相同绝对路径中,即(以管理员身份运行):

mkdir %PROGRAMDATA%\npm
setx PATH "%PROGRAMDATA%\npm;%PATH%" /M
npm config set prefix %PROGRAMDATA%\npm

打开一个新的cmd.exe窗口,然后重新安装所有全局软件包。

说明(按行号):

  1. 在一个合适的位置创建一个文件夹来保存全局变量(Microsoft坚决不应该写入ProgramFiles,因此%PROGRAMDATA%似乎是下一个逻辑位置。
  2. 该目录必须位于路径上,因此可setx .. /M用于设置系统路径(在HKEY_LOCAL_MACHINE下)。这就是要求您在具有管理员权限的shell中运行它的原因。
  3. 告诉npm使用此新路径。(注意:文件夹在此shell中的%PATH%中不可见,因此您必须打开一个新窗口)。


 类似资料:
  • 问题内容: 使用NPM全局安装电子时,试图解决此问题并得到以下错误: 问题答案: 正如npm提议的那样: 通过这样做,您可以将全局npm软件包的范围限制在用户帐户内,而不是在计算机中的所有用户之间共享。即使您是唯一的用户,也建议这样做。:-)

  • 我知道这个问题看起来像个愚蠢的问题,但我是使用NodeJS的新手。 在我安装了nodejs之后,我编写了这个命令来检查它

  • C:\Project\Angular2Demo\Angular2Demo npm错误!网络getaddrinfo ENOTFOUND注册表。npmjs。组织注册处。npmjs。组织:443 NPM ERR!网络这很可能不是npm本身的问题npm ERR!网络和网络连接有关。npm ERR!网络在大多数情况下,你是背后的代理或有坏的网络设置GS. npm ERR!网络npm ERR!网络如果您是背后

  • 问题内容: 我根本找不到npm存储其全局设置的位置。 npm config获取userconfig npm config获取globalconfig 这些路径中都没有文件,但是 npm config get proxy->返回我的代理URL。我要删除。 npm config -g删除代理 问题答案: 似乎该文件用于编辑其配置文件不是在全新安装中创建的,因为每个文件都有一个默认选项。这就是为什么您仍

  • 问题内容: 我写了一个模块,我刚才将其发布到npm(https://npmjs.org/package/wisp) 因此,可以从命令行进行安装: 但是,当我从命令行运行它时,我不断收到未安装乐观主义者的错误消息: 但是,我在package.json中指定了依赖性: 有谁知道该怎么做才能使它运行?我知道它与bin部分有关,将可执行文件添加到bin中,该目录中的node_modules为空。不知道如何

  • 我写了一个模块,不久前发布到npm(https://npmjs.org/package/wisp) 所以它可以从命令行安装: 但是,当我从命令行运行它时,我不断收到一个错误,即未安装optimist: 但是,我在package.json中指定了依赖项: 有人知道该怎么做才能让它运行吗?我知道这与bin部分将可执行文件添加到bin以及该目录中的node_模块为空有关。不知道如何解决这个问题。