全局 npm 在 Windows 上的安装位置?

我不是100% 肯定,但是我相信我在我的家庭和办公电脑上都安装了 Windows Installer 节点 v5。

在我的家庭个人电脑上,全球安装发生在% APPDATA% :

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

而在我的办公电脑上,它们被放在程序文件下:

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

我需要为 PyCharm 的文件监视器提供这些全局工具的完整路径,而且因为我分享的项目文件,所以不将全局资源放在用户文件夹下是有意义的。

为什么全局安装会出现在不同的文件夹中,以及如何将它们强制到所有团队成员都共有的位置?

216294 次浏览

如果在全局范围内安装软件包,这些是典型的 npm 路径:

Windows XP -             %USERPROFILE%\Application Data\npm\node_modules
Newer Windows Versions - %AppData%\npm\node_modules
or -                     %AppData%\roaming\npm\node_modules

只需按下窗口按钮,键入% APPDATA% ,然后键入 enter。

上面是您可以找到 npm node _ module 文件夹的位置,这是系统中全局模块所在的位置。

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

  • 本地安装(缺省值) : 将内容放入当前包根目录的./node _ module 中。
  • Global install (with-g) : 将内容放入/usr/local 或安装节点的任何位置。
  • 如果您需要()它,请在本地安装它。
  • 如果要在命令行上运行它,请在全局范围内安装它。- > 如果你需要两者,然后安装在这两个地方,或使用 npm 链接。

前缀配置

前缀配置默认为安装节点的位置 大多数系统,这是 /usr/local 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 上的默认位置,而且我可能在实现这个覆盖之前已经安装了我的办公室版本。

这也提供了一个解决方案,让所有团队成员都将全局项存储在相对于他们的 PC 的相同绝对路径中,即(作为管理员运行) :
(在 cmd中运行,而不是在 PowerShell 中!)

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

打开一个新的 cmd.exe 窗口并重新安装所有全局包。

说明(由 lineno 提供) :

  1. 在合理的位置创建一个文件夹来保存全局变量(Microsoft 是 坚持不应该写入 ProgramFiles,因此% PROGRAMDATA% 似乎 就像下一个合乎逻辑的地方。
  2. 目录需要在路径上,因此使用 setx .. /M设置 系统路径(在 HKEY _ LOCAL _ MACHINE 下) 在具有管理员权限的 shell 中执行此操作。
  3. 告诉 npm使用这个新路径。(注意: 文件夹在% PATH% in 中不可见 这个 shell,所以必须打开一个新窗口)。

如果您只是想知道 npm 在哪里安装您的全局模块(这个线程的标题) ,请查看运行 npm install -g sample_module时的输出

$npm install-g sample _ module C: 用户用户 AppData 漫游 npm sample _ module-> C: 用户用户 AppData 漫游 npm node _ module sample _ module bin sample _ module. js + sample _ module@5.1.0在2.821 s 中更新了1个包

到目前为止,像 npm i -g @vue/cli这样安装的全局包默认存储在一个目录中:

C:\Users\<YourUserName>\AppData\Roaming\npm\node_modules

这里是我如何安装全球反应窗口,

安装-反应

我可以看到软件包安装在,

C: 用户用户名 AppData 漫游 npm node _ module

我使用 nvm 安装节点 v14.9.0,并在 D 驱动器 D:\Users\<user_name>\AppData\Roaming\nvm\v14.9.0\node64.exe中找到它。