更改Windows中node.js模块的默认全局安装目录?


134

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

设置NODE_PATHNODE_MODULES变量不会改变任何东西:%appdata%\npm默认情况下仍会安装东西。

如何更改全局安装路径?


5
可能是因为gremo希望将所有与nodejs相关的依赖关系放在一个地方。问题是,通过更新nodejs,您将丢失所有已安装的软件包。另一方面,将npm放在用户的%appdata%文件夹中会使同一计算机上的其他用户无法访问它。考虑将其安装为普通用户还是管理员。
Volker E.


1
从%AppData%移到一个更受控制的位置对我来说是很有意义的,因为感觉有点%temp%-ish。(对Firefox配置文件和其他一些配置相同。)但是C:\Program Files,随时可能出现管理员权限问题。➪我宁愿搬家D:\my-repository\npm
Frank Nocke 2015年

2
@WiredPrairie,因为在用户文件夹中进行安装几乎是愚蠢的。“全局”安装软件包的要点是,整个系统可以访问这些软件包。
Michael Trouw,2016年

4
这是这样做的原因:在我的网络上,您不可以从AppData文件夹中执行代码,因为这通常是恶意软件(尤其是CodeLocker)的下载和运行方式。这是针对恶意软件的额外保护层。由于Node在此处安装了东西,因此如果不移动安装位置或降低系统的安全性就无法运行节点模块。
史蒂夫·辛纳

Answers:


81

您需要做的只是阅读npm-folders文档。我不想立即启动我的Win笔记本,因此无法验证它,但您只prefixc:\Program Files\nodejs在配置文件中更改为。如果要为所有用户全局更改它,请编辑c:\Program Files\nodejs\npmrc文件,否则请创建/编辑c:\Users\{username}\.npmrc

但是此更改可能会产生一些副作用,因此请先阅读此讨论。我认为您的主意不是一个好主意。


33
npmrcC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.

3
npm config set cache <new cache location> --global如果在安装模块时遇到问题并且缓存位于共享驱动器中,还可以将npm缓存位置更改为本地目录。ENOENT: no such file or directory当缓存位于共享驱动器中时,我收到了此错误
redDevil

1
不要忘记更新系统PATH变量以指向新的npm文件夹。
Hayko Koryun '16

64

尝试将全局软件包安装到C:\Program Files (x86)\nodejs\我的系统中,导致以管理员身份运行,因为npm试图将其安装到
C:\Program Files (x86)\nodejs\node_modules\

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

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

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

参考

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


奇怪的是我使用的是npm 2.1.6,并且它正在%appdata%/ npm中安装所有全局模块,现在我将其更新为2.6.1,它一直尝试(失败)安装到c:\ windows \程序文件\ ..您是否知道这种行为何时更改?
WORMSS 2015年


看来这与我安装npm的另一种方式有关。尽管感谢差异。
WORMSS 2015年

2
npm config设置前缀C:\ Users \ {username} \ AppData \ Roaming \ npm
BernhardDöbler16年

62

您可以在对另一个问题的回答中看到我的回答。


在Windows中,全局安装路径实际上位于用户的配置文件目录中

  • %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"

1
根据您的中间建议,将全局位置设置为C:\ ProgramData似乎是在Windows环境中实现此目标的最佳位置,但是当前缀用于将全局配置文件中的前缀设置为查找全局配置文件。我通过编辑内置配置文件C:\ Program Files \ nodejs \ node_modules \ npm \ npmrc达到了相同的结果,但我怀疑此更改在某个阶段可能会被更新覆盖。
oenpelli 2014年

@oenpelli在这种情况下,“ global”是您的用户.npmrc在home / profile目录中的文件。需要为所有用户设置它。
Tracker1 2015年

如果我在Windows上没有管理员权限,如何更改全局安装?
liam xu

利亚姆,您可以通过.npmrc个人资料目录中的文件为您的用户调整此设置...不过,此时为ymmv。
Tracker1 2013年

19

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

选择C:\ProgramData\nodejs作为安装目录nodejsnodejs与作为管理员组成员的任何用户一起安装。

这可以用巧克力来完成,如下所示: 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\npmrc使用以下内容进行编辑prefix=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作为系统范围的安装运行,所有拥有适当权限的用户都可以轻松使用。然后,每个用户都可以运行node,并npm根据需要。


“ npm config list”的输出是什么。另外,您是在Windows还是Linux上运行?
Damilola 2015年

都尝试过。npm config add prefix可以,但是这里没有提到任何环境变量。我不想提出另一个问题,因为这个问题涵盖了它,但是答案没有(除外npm config)。
trysis

NODE环境变量本质上仅是公开二进制文件。您仍然需要按照过程中所述设置前缀和缓存(如果之前未设置)。
Damilola

哦谢谢。从答案或Google的其他任何地方都不清楚。我一直在寻找环境变量,因为它们很容易通过编程方式进行更改,但是我想,一线Bash命令也可以。
trysis

这对我来说效果很好。感谢您的详细说明!
ErnestoP 2015年

15

您应该使用此命令设置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


1
乐意效劳。每当您更改环境时,制作一个Shel脚本或批处理文件来为您执行此操作也是一个好主意。至少那是id所做的
davejoem

另外值得一加入“如果有在路径中有空格如。"C:\Program Files\blah"
taylorswiftfan

7
  • 第一步

    npm config获取前缀

    • 默认路径是: %USERPROFILE%\AppData\Roaming\npm
  • 第二步

    npm config获取缓存

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

    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内部


感谢您的解决方案解决了我的问题,最近两周我一直在尝试解决问题,实际上我的Windows用户路径中像ABC XYZ WJS一样有空格,因此在我的npm安装给出错误,因此您的解决方案可帮助我清除缓存并将缓存设置为新位置。
塔希尔·阿弗里迪

4

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


3

使用从C:\ Users {用户名} \ AppData \ Roaming \ npmC:\ Users {用户名} \ AppData \ Roaming \ npm缓存路径到目标的Windows符号链接对我来说非常有用

如何添加符号链接

在此处输入图片说明


1

在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\npm一切将正常运行”。


0

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


0

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


2
您是否有任何文件或资料支持您的陈述?按照目前的状态,如果不亲自尝试就很难判断您的建议是否有效,这会节省时间,否则可以节省时间。
Filnor

0

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


0

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

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

npm list -g --depth = 0

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

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

在C驱动器的Roaming文件夹中,您将找到npm和npm-cache文件夹。单击+ npm +文件夹并选择路径[只需单击条形路径将被自动选择并复制]。这是您需要选择的路径图像

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

最后一步:转到CMD,然后右键单击以下命令:

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

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

全部设置....立即尝试...它将起作用..


0

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

npm list -g --depth = 0

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

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

它为我工作。阅读我以前的答案以更好地理解。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.