Windows上的全局npm安装位置?

新手上路,请多包涵

我不是 100% 确定,但我相信我从我的家庭和办公室 PC 上的 Windows 安装程序安装了 node 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 的文件观察器提供这些全局工具的完整路径,并且由于我共享的项目文件在用户文件夹下没有全局资源是有意义的。

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

原文由 thebjorn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 823
2 个回答

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

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

前缀配置

前缀配置默认为安装节点的位置。在大多数系统上,这是 /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 的相同绝对路径中,即(以管理员身份运行):

(在 cmd 中运行它,而不是在 PowerShell 中!)

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

原文由 thebjorn 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你全局安装一个包,这些是典型的 npm 路径:

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

原文由 Dennis Stücken 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题