【问题标题】:Global npm install location on windows?Windows上的全局npm安装位置?
【发布时间】:2016-02-22 12:46:09
【问题描述】:

我不是 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的工件

标签: node.js windows npm pycharm


【解决方案1】:

根据: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 使用这条新路径。 (注意:文件夹在 %PATH% 中不可见 这个shell,所以你必须打开一个新窗口)。

【讨论】:

  • 警告: 出于某种原因,命令 setx PATH "%PROGRAMDATA%\npm;%PATH%" /M 不会添加新值,而是会替换所有内容(在 PowerShell 中)。
  • 截至今天 Linux 的确切位置是:/usr/local/lib/node_modules
【解决方案2】:

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

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

【讨论】:

  • Hmm..%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文件
【解决方案3】:

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

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

【讨论】:

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

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

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

【讨论】:

    【解决方案5】:

    如果您只是想找出 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.821s 内更新了 1 个包

    【讨论】:

    • @thebjorn 我认为您的问题标题不够具体,因此像我这样的人会发现它正在寻找 npm 安装位置,而不是寻找如何更改它或为什么有不同的文件夹等。
    • 接受的答案包含您的问题的答案:npm config ls -l | grep prefix,即使没有,正确的程序是提出一个新的更窄的问题...
    • 绝对不容易,因为你必须安装一些东西而不是仅仅查找一些东西(这使得它无法使用,例如用于 shell/bat 脚本)。
    • 如果你想弄清楚你的全局模块在安装过程中被放置在哪里(就像我的情况一样,可能其他人会根据当前的标题找到这个问题)。
    • 再次,这是您的问题(最好通过where 命令解决),这不是这个问题的意义所在。这不是我的问题的答案。
    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2011-08-24
    • 2014-06-17
    • 2015-04-13
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多