ChatGPT解决这个技术问题 Extra ChatGPT

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 的文件观察器提供这些全局工具的完整路径,并且由于我共享的项目文件在用户文件夹下没有全局资源是有意义的。

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

3年后,我也有类似的谜团。答案原来是该节点在 c:\program files\nodejs 创建了一个结点,它实际上指向了 %appdata%\nvm\v8.10.0。所以它给人的错觉可能符合你所看到的。
c:\program files\nodejs 符号链接原来是 nvm 的工件

m
m93a

根据: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 窗口并重新安装所有全局包。

说明(按线号):

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


警告: 出于某种原因,命令 setx PATH "%PROGRAMDATA%\npm;%PATH%" /M 不会添加新值,而是会替换所有内容(在 PowerShell 中)。
截至今天,Linux 确切区域的位置是:/usr/local/lib/node_modules
D
Dennis Stücken

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

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

嗯.. %APPDATA% 在用户文件夹下,PyCharm 似乎不接受环境变量,所以我想这是不行的。
这是错误的修复你的答案〜/AppData/Roaming/npm/node_modules $ npm /c/Users/Phil/AppData/Roaming/npm/npm: line 12: node: command not found
通过 Powershell 全局安装软件包,在 "$env:APPDATA\npm" 中创建了一个通用文件、一个 cmd_auto_file 文件和一个 Windows PowerShell Script 文件
S
Subhan Luckiest

只需按下 Windows 按钮并输入 %APPDATA% 并输入回车。

上面是您可以找到 \npm\node_modules 文件夹的位置。这是全局模块在您的系统中的位置。


如果您查看我的问题,您会发现您的断言是错误的。全局模块也可以安装在 %PROGRAMFILES%\nodejs 下,这是我的第一个问题(为什么它们最终位于我的家庭/办公室 PC 上的不同文件夹中?)。我的问题的上下文(如前所述..)是我需要向 PyCharm IDE 提供这些全局 npm 安装工具的路径,以便其他团队成员受益于我为我们的项目正确设置它。由于 (a) PyCharm 在指定可执行文件时不允许使用环境变量,并且 (b) %APPDATA%=c:\Users\bjorn\.. 我不能在这里使用 APPDATA。
A
Abhishek Bharti

截至今天,安装了全局软件包,例如。 npm i -g @vue/cli 默认存储在目录中:

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

j
java-addict301

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

npm install -g sample_module C:\Users\user\AppData\Roaming\npm\sample_module -> C:\Users\user\AppData\Roaming\npm\node_modules\sample_module\bin\sample_module.js + sample_module@5.1.0在 2.821 秒内更新了 1 个包


@thebjorn 我认为您的问题标题不够具体,因此像我这样的人会发现它正在寻找 npm 安装位置,而不是寻找如何更改它或为什么有不同的文件夹等。
接受的答案包含您的问题的答案:npm config ls -l | grep prefix,即使没有,正确的程序是提出一个新的更狭隘的问题......
绝对不容易,因为您必须安装一些东西而不是仅仅查找一些东西(这使得它无法使用,例如用于 shell/bat 脚本)。
如果你想弄清楚你的全局模块在安装过程中被放置在哪里(就像我的情况一样,可能其他人会根据它的当前标题找到这个问题)。
同样,这是您的问题(where 命令可以更好地解决此问题),这不是这个问题的意义所在。这不是我的问题的答案。
V
Vaibhav Bajpayee

C:\Program Files\nodejs\node_modules\npm\node_modules


M
Mayur

这是我在 Windows 上全局安装 react 的方法,

npm install -g 反应

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

C:\Users\username\AppData\Roaming\npm\node_modules


M
Mike

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