【问题标题】:Change default global installation directory for node.js modules in Windows?更改 Windows 中 node.js 模块的默认全局安装目录?
【发布时间】:2013-11-21 09:06:16
【问题描述】:

在我的 Windows 安装中,PATH 包括 C:\Program Files\nodejs,其中可执行文件 node.exe 是。我可以从 shell 启动 node 以及 npm。我也想在C:\Program Files\nodejs 中安装新的可执行文件,但似乎无法实现。

设置NODE_PATHNODE_MODULES 变量并没有改变任何东西:默认情况下仍然安装在%appdata%\npm 中。

如何更改全局安装路径?

【问题讨论】:

  • 可能是因为 gremo 希望将所有与 nodejs 相关的依赖项放在一个地方。问题是,更新 nodejs 会丢失所有已安装的软件包。另一方面,将 npm 放在用户的 %appdata% 文件夹中会使同一台机器上的其他用户无法访问它。考虑以普通用户和管理员的身份安装它。
  • 从 %AppData% 移出到一个更受控的位置 对我来说很有意义,因为我觉得这很 %temp%-ish。 (对 Firefox 配置文件和其他一些配置文件执行相同的操作)。然而C:\Program Files 已经准备好应对不断的管理员权限问题。 ➪ 我宁愿搬D:\my-repository\npm 之类的。
  • @WiredPrairie 因为安装在用户文件夹中几乎是愚蠢的。 “全局”安装包的全部意义在于整个系统可以访问这些包。
  • 这样做的原因是:在我的网络上,不允许您从 AppData 文件夹执行代码,因为这通常是恶意软件(尤其是 CodeLocker)被下载和运行的方式。这是针对恶意软件的额外保护层。由于 Node 在那里安装东西,我无法在不移动安装位置或降低系统安全性的情况下运行节点模块。

标签: node.js npm


【解决方案1】:

您需要的一切都在npm-folders documentation 中。我现在不想启动我的 Win 笔记本,所以我无法验证它,但你应该只在配置文件中将 prefix 更改为 C:\Program Files\nodejs。如果您想为所有用户全局更改它,请编辑C:\Program Files\nodejs\npmrc 文件,否则创建/编辑C:\Users\{username}\.npmrc

但是这个改动可能会有一些副作用,所以请先阅读this discussion。我认为这不是一个好主意。

【讨论】:

  • 我在C:\path\to\nodejs\node_modules\npm\npmrc找到了npmrc文件
  • 如果您在安装模块时遇到问题并且缓存位于共享驱动器中,也可以使用 npm config set cache <new cache location> --global 将 npm 缓存位置更改为本地目录。我收到了这个错误,ENOENT: no such file or directory 当缓存在共享驱动器中时
  • 不要忘记更新系统 PATH 变量以指向新的 npm 文件夹。
【解决方案2】:

尝试将 global 包安装到 C:\Program Files (x86)\nodejs\ 给我以管理员身份运行 问题,因为 npm 试图安装到
C:\Program Files (x86)\nodejs\node_modules\

要解决此问题,请将 global 安装目录更改为 C:\Users\{username}\AppData\Roaming\npm:

C:\Users\{username}\ 中,创建.npmrc 包含内容的文件:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

参考

环境
nodejs x86 安装程序到 Windows 7 Ultimate N 64 位 SP1 上的 C:\Program Files (x86)\nodejs\
node --version:v0.10.28
npm --version:1.4.10

【讨论】:

  • 这很奇怪,我使用的是 npm 2.1.6,它正在将所有全局模块安装在 %appdata%/npm 中,现在我将它更新到 2.6.1,它一直在尝试(并且失败)安装到 c:\windows\program files\.. 你知道这种行为是什么时候改变的吗?
  • 这里有一些node wiki diffs
  • 这似乎与我安装 npm 的不同方式有关。感谢您的差异。
  • npm 配置设置前缀 C:\Users\{username}\AppData\Roaming\npm
  • @WORMSS 我从节点 12 升级到节点 14 后遇到了这个问题,不过使用相同的安装方法(msi 安装程序,64 位)。以前从未有过,有趣的是 v1 之前的旧问题如何重新出现......
【解决方案3】:

您可以在我的answer to another question 中看到我对此的回答。


在 Windows 中,global 安装路径实际上是在您用户的配置文件目录中

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • 警告:如果您以其他用户身份执行定时事件或其他自动化操作,请确保以该用户身份运行npm install。一些模块/实用程序应该全局安装。
  • 安装程序错误:您可能必须自己创建这些目录或将...\npm 目录添加到您的用户路径中。

要将所有用户的“全局”位置更改为更合适的共享全局位置%ALLUSERSPROFILE%\(npm|npm-cache)(以管理员身份执行此操作):

  • 创建[NODE_INSTALL_PATH]\etc\ 目录
    • 在您尝试 npm config --global ... 操作之前需要这样做
  • 为 npm 模块创建全局(管理员)位置
    • C:\ProgramData\npm-cache - npm 模块会放在这里
    • C:\ProgramData\npm - 全局安装模块的二进制脚本将放在这里
    • C:\ProgramData\npm\node_modules - 全局安装的模块会放在这里
    • 适当设置权限
      • 管理员:修改
      • 经过身份验证的用户:读取/执行
  • 设置全局配置设置(管理员命令提示符)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • C:\ProgramData\npm 添加到系统的Path 环境变量中

如果您想将用户的“全局”位置改为%LOCALAPPDATA%\(npm|npm-cache) 路径:

  • 创建必要的目录
    • C:\Users\YOURNAME\AppData\Local\npm-cache - npm 模块会放在这里
    • C:\Users\YOURNAME\AppData\Local\npm - 已安装模块的二进制脚本将放在这里
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - 全局安装的模块会放在这里
  • 配置 npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • 将新的 npm 路径添加到环境的 PATH
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

【讨论】:

  • 根据您的中间建议将全局位置设置为 C:\ProgramData 似乎是 Windows 环境中的最佳位置,但我看不出如何在全局中设置前缀当前缀用于查找全局配置文件时的配置文件。我通过编辑内置配置文件 C:\Program Files\nodejs\node_modules\npm\npmrc 获得了相同的结果,但我怀疑此更改可能会在某个阶段被更新覆盖。
  • @oenpelli 在这种情况下,“global”是您的用户在 home/profile 目录中的 .npmrc 文件。它需要为所有用户设置。
  • 如果我在windows上没有管理员权限,如何更改全局安装?
  • liam,您可以通过配置文件目录中的 .npmrc 文件为您的用户调整此设置...不过,此时是 ymmv。
【解决方案4】:

基于chocolatey 的安装概念和@Tracker 建议的想法,对我有用的是执行以下操作,然后所有Windows 用户都乐于使用nodejsnpm

选择C:\ProgramData\nodejs 作为nodejs 的安装目录,并使用属于管理员组成员的任何用户安装nodejs

这可以通过巧克力来完成:choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

然后在安装目录的根目录下创建一个名为npm-cache的文件夹,按照上面的操作就是C:\ProgramData\nodejs\npm-cache

在安装目录的根目录下创建一个名为etc的文件夹,按照上面的操作就是C:\ProgramData\nodejs\etc

NODE环境变量设置为C:\ProgramData\nodejs

NODE_PATH环境变量设置为C:\ProgramData\nodejs\node_modules

确保将上面创建的%NODE% 环境变量(或其路径)添加到%PATH% 环境变量中。

用以下内容编辑%NODE_PATH%\npm\npmrcprefix=C:\ProgramData\nodejs

在命令提示符下,像这样设置全局配置...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

重要的是,最好在更新 npm (npm -g install npm@latest) 或尝试安装任何 npm 模块之前按顺序执行上述步骤。

执行上述步骤帮助我们将nodejs 运行为系统范围的安装,所有具有适当权限的用户都可以轻松使用。然后每个用户可以根据需要运行nodenpm

【讨论】:

  • 'npm config list' 的输出是什么。另外,您是在 Windows 还是 Linux 上运行?
  • 两者都试过了。 npm config add prefix 有效,但这里没有提到任何环境变量。我不想提出另一个问题,因为这个问题涵盖了它,但答案没有(除了npm config)。
  • NODE 环境变量本质上只是为了公开二进制文件。您仍然需要按照过程中所述设置前缀和缓存(如果之前未设置)。
  • 哦,谢谢。从答案或谷歌的其他任何地方都不是很清楚。我一直在寻找环境变量,因为它们更容易以编程方式更改,但我想单行 Bash 命令也可以。
  • 这对我来说效果很好。感谢您的详细说明!
【解决方案5】:

你应该使用这个命令来设置npm包的全局安装位置

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(cmd/git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

您也可以考虑它旁边的npm-cache 位置。 (就像在 Windows 上正常的 nodejs 安装一样)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(cmd/git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache

【讨论】:

  • 很高兴为您提供帮助。每当您更改环境时,制作一个 Shel 脚本或批处理文件来为您执行它也是一个好主意。至少 id 是这样做的
  • 如果路径中有空格,也值得添加“。例如"C:\Program Files\blah"
【解决方案6】:
  • 第 1 步

    npm 配置获取前缀

    • 默认路径为:%USERPROFILE%\AppData\Roaming\npm
  • 第 2 步

    npm 配置获取缓存

    • 默认路径为:%USERPROFILE%\AppData\Roaming\npm-cache
  • 第 3 步

    npm 配置设置前缀\npm

    • 示例npm config set prefix C:\\dev\\node\\npm
  • 第四步

    npm 配置设置缓存\npm-cache

    • 示例npm config set cache C:\\dev\\node\\npm-cache

再次运行第 1 步和第 2 步,检查路径是否按要求更新

就是这样。每当您安装全局包时,您应该会看到它们安装在 \npm\node_modules

【讨论】:

  • 感谢您的解决方案解决了我的问题,从过去 2 周开始,我一直在尝试解决问题,实际上我的 Windows 用户路径中有空格,例如 ABC XYZ WJS,所以我将路径更改为一个单词,在那之后我的 npm install 出错了,所以你的解决方案帮助我清除缓存并将缓存设置到我的新位置。
【解决方案7】:

默认全局文件夹为C:\Users\{username}\AppData\Roaming\npm。 您可以在C:\Users\{username}\ 中创建(如果不存在).npmrc 文件并添加 prefix = "path\\to\\yourglobalfolder"。 请注意,在 Windows 中,路径应以double back-slash 分隔。

【讨论】:

    【解决方案8】:

    使用来自 C:\Users{username}\AppData\Roaming\npmC:\Users{username}\AppData\Roaming\npm-cache 的 Windows 符号链接 通往目的地的路径对我来说非常有用。

    How to add a symbolic link

    【讨论】:

      【解决方案9】:

      在 Windows 中,如果你想将磁盘 C 中的 npm 或 nodejs 文件夹移动到另一个位置,但它仍然可以确保 node 和 npm 正常工作,你可以像这样创建符号链接: 打开命令提示符:

      mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"
      

      例子:

      mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"
      

      现在您已经为 npm 文件夹创建了一个符号链接,该符号链接将引用 D:\Nodejs Data\npmEverything 将正常工作。

      【讨论】:

        【解决方案10】:

        通过以下命令查找全局节点包安装的当前路径。

        npm list -g --depth=0

        通过以下命令将此路径更改为正确的路径。

        npm 设置前缀 C:\Users\username(Number)\AppData\Roaming\npm\node_modules

        它对我有用。阅读我之前的答案以获得更好的理解。

        【讨论】:

          【解决方案11】:

          我在这里尝试了大多数答案,但在我的情况下似乎没有任何效果。所以我将环境变量中的 Temp 位置更改为 C:\npm。然后它开始工作。这不是一个好主意,而是一个临时解决方案。

          【讨论】:

            【解决方案12】:

            从程序文件夹中完全删除节点文件夹。卸载 node.js 然后重新安装。 更改环境变量 PATH 的路径。从 C:\users\yourusername 删除 .npmrc 文件

            【讨论】:

            • 您有任何文件或资料支持您的说法吗?就目前的情况而言,如果不亲自尝试,很难判断您的建议是否真的有效,这会占用本来可以节省的时间。
            【解决方案13】:

            它不需要太多配置,只需转到高级系统设置复制您安装节点的路径并创建一个环境变量并在提示符中使用 node -v 命令检查!

            【讨论】:

              【解决方案14】:

              要更改 Windows 中 node.js(npm) 模块的默认全局安装目录,您需要修复 2 个路径。

              当您尝试使用以下命令全局安装节点模块时,首先检查当前安装节点模块的路径:

              npm list -g --depth=0

              它将返回当前安装节点模块的路径。 示例:D:\vsc\typescript

              现在访问以下路径以查看 npm 和 npm-cache 文件夹。 C:\Users\用户名(或号码)\AppData\Roaming

              在 C 盘的 Roaming 文件夹中,您会找到 npm 和 npm-cache 文件夹。 点击+npm+文件夹,选择路径【直接点击吧路径会自动选择,复制一下】This is a path image which you need to select

              复制此路径后,将其设置为环境变量,并使用变量名称 Path(您可以选择任何名称作为名称)。 现在你已经为你的 npm 文件夹设置了路径,现在是时候设置前缀了。 进入 npm 文件夹并检查 node_module 文件夹是否存在,如果不存在,则创建一个名为 node_modules 的新文件夹。 完成所有步骤后,您所有的全局模块都将进入此文件夹。

              最后一步: 转到 CMD 并右键以下命令:

              npm 设置前缀 C:\Users\username(Number)\AppData\Roaming\npm\node_modules

              这也是我们为环境变量选择的相同路径,我们只是在路径中添加了一个文件夹,即 node_module。

              全部设置....立即尝试...它会工作..

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-07-30
                • 1970-01-01
                • 1970-01-01
                • 2011-02-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多