我不是 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 的文件观察器提供这些全局工具的完整路径,并且由于我共享的项目文件在用户文件夹下没有全局资源是有意义的。
为什么全局安装最终会在不同的文件夹中,我如何将它们强制到所有团队成员共同的位置?
根据: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% 中不可见,所以你必须打开一个新窗口)。
如果您全局安装包,这些是典型的 npm 路径:
Windows XP - %USERPROFILE%\Application Data\npm\node_modules
Newer Windows Versions - %AppData%\npm\node_modules
or - %AppData%\roaming\npm\node_modules
%APPDATA%
在用户文件夹下,PyCharm 似乎不接受环境变量,所以我想这是不行的。
"$env:APPDATA\npm"
中创建了一个通用文件、一个 cmd_auto_file
文件和一个 Windows PowerShell Script
文件
只需按下 Windows 按钮并输入 %APPDATA% 并输入回车。
上面是您可以找到 \npm\node_modules 文件夹的位置。这是全局模块在您的系统中的位置。
%PROGRAMFILES%\nodejs
下,这是我的第一个问题(为什么它们最终位于我的家庭/办公室 PC 上的不同文件夹中?)。我的问题的上下文(如前所述..)是我需要向 PyCharm IDE 提供这些全局 npm 安装工具的路径,以便其他团队成员受益于我为我们的项目正确设置它。由于 (a) PyCharm 在指定可执行文件时不允许使用环境变量,并且 (b) %APPDATA%=c:\Users\bjorn\..
我不能在这里使用 APPDATA。
截至今天,安装了全局软件包,例如。 npm i -g @vue/cli
默认存储在目录中:
C:\Users\<YourUserName>\AppData\Roaming\npm\node_modules
如果您只是想找出 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 个包
npm config ls -l | grep prefix
,即使没有,正确的程序是提出一个新的更狭隘的问题......
where
命令可以更好地解决此问题),这不是这个问题的意义所在。这不是我的问题的答案。
C:\Program Files\nodejs\node_modules\npm\node_modules
这是我在 Windows 上全局安装 react 的方法,
npm install -g 反应
我可以看到安装的软件包,
C:\Users\username\AppData\Roaming\npm\node_modules
我使用 nvm 安装节点 v14.9.0,并在 D 驱动器中找到它:D:\Users\<user_name>\AppData\Roaming\nvm\v14.9.0\node64.exe
。
setx PATH "%PROGRAMDATA%\npm;%PATH%" /M
不会添加新值,而是会替换所有内容(在 PowerShell 中)。/usr/local/lib/node_modules