一尘不染

Windows上的全局npm安装位置?

node.js

我不确定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的文件监视程序提供许多这些全局工具的完整路径,并且由于我共享的项目文件很有意义,因此在用户文件夹下没有全局资源。

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


阅读 227

收藏
2020-07-07

共1个答案

一尘不染

根据: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%中不可见,因此您必须打开一个新窗口)。
2020-07-07