如何修改npm的全局安装路径?
修改 npm
的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g
安装的模块)和缓存文件存储到自定义路径。以下是详细步骤:
1. 创建自定义路径的目录
在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件:
2. 配置 npm 的全局路径和缓存路径
使用 npm config
命令修改全局安装路径和缓存路径:
# 设置全局模块的安装路径(prefix)
npm config set prefix "D:\soft\node_repository\node_global"# 设置缓存路径(cache)
npm config set cache "D:\soft\node_repository\node_cache"
3. 验证配置是否生效
执行以下命令检查配置是否成功:
# 查看全局安装路径
npm config get prefix # 查看缓存路径
npm config get cache
4. 配置环境变量(关键步骤)
为了让系统识别全局安装的命令(如 npm
全局包的可执行文件),需要将新路径添加到 环境变量 中:
⑴:添加 PATH
环境变量
Windows 操作步骤:
右击此电脑 → 点击“属性” → “高级系统设置” → “环境变量”。
在“系统变量”中找到 Path
变量,点击“编辑”。
新增以下路径:
D:\soft\node_repository\node_global
(全局模块的根目录)
D:\soft\node_repository\node_global\node_modules\.bin
(全局模块的可执行文件目录)
点击确定保存。
⑵.(可选但推荐):设置 NODE_PATH
如果全局模块需要被 Node.js 项目直接引用,添加 NODE_PATH
环境变量:
- 在“系统变量”中新建变量:
- 变量名:
NODE_PATH
- 变量值:
D:\soft\node_repository\node_global\node_modules
- 变量名:
5. 测试配置
⑴ 安装一个全局包
npm install -g pm2 # 例如安装 pm2
- 检查安装路径:
D:\soft\node_repository\node_global\node_modules
下应出现pm2
目录。
⑵.验证命令是否生效
pm2 -v # 应显示 pm2 的版本号
6. 其他可选配置(提升体验)
⑴ 设置淘宝镜像加速下载
npm config set registry https://registry.npmmirror.com
⑵.检查完整配置
npm config list # 查看所有 npm 配置
prefix
(全局路径)和 cache
(缓存路径)的区别
(1) prefix
(全局路径,如 D:\node_global
)
- 存储内容:已安装的全局 npm 包的最终版本。
- 作用:存放通过
npm install -g
安装的完整包文件(如node_modules
目录下的模块)和可执行命令(如webpack
、pm2
)。 - 文件结构示例:
D:\node_global\ ├── node_modules\ │ ├── package1@1.0.0\ │ ├── package2@2.3.1\ │ └── ... └── node_modules\.bin\├── executable1.exe└── executable2.sh
(2) cache
(缓存路径,如 D:\node_cache
)
- 存储内容:下载的包的原始压缩文件(
.tgz
)和元数据(如哈希校验值、索引文件)。 - 作用:临时存储下载的包,供后续安装时快速复用,避免重复下载。
- 文件结构示例:
D:\node_cache\ ├── _cacache\ │ ├── content-v2\ # 存储原始 .tgz 包(二进制文件) │ ├── index-v5\ # 存储元数据(如包的哈希值、下载时间等) │ └── tmp\ # 临时文件 └── ...其他配置文件
2. 为什么不会“下载两份”?
npm 的安装流程如下,不会重复下载包:
-
下载阶段:
- 当执行
npm install -g package
时,npm 首先检查cache
(D:\node_cache
)中是否有该包的压缩文件(.tgz
)。 - 如果没有,则从远程仓库(如 npmjs.com 或淘宝镜像)下载一次,并将压缩包存入
cache
。 - 如果已有缓存,则直接使用已有的
.tgz
文件。
- 当执行
-
安装阶段:
- 从
cache
中的.tgz
文件解压并安装到prefix
(D:\node_global
),生成可执行的模块和命令。 - 同一个包的
.tgz
文件只会在cache
中存储一份,而安装后的解压文件会存放到prefix
。
- 从
3. 具体例子说明
假设你全局安装了 pm2
:
- 缓存路径
D:\node_cache
:- 存储
pm2
的原始.tgz
文件(如pm2-5.3.0.tgz
)和元数据。
- 存储
- 全局路径
D:\node_global
:- 存储解压后的
pm2
模块文件(如node_modules/pm2
)和可执行文件(如pm2.cmd
)。
- 存储解压后的
关键点:
.tgz
文件只存在于cache
,而解压后的文件存在于prefix
。- 如果再次安装
pm2
,npm 会直接从cache
中读取.tgz
,无需重新下载,但会再次解压到prefix
(如果版本不同或需要更新)。
4. 为什么需要分开这两个路径?
- 职责分离:
cache
是临时存储区,用于加速安装。prefix
是最终安装路径,存放可直接使用的模块和命令。
- 灵活性:
- 可以将
cache
放在高速存储(如 SSD),prefix
放在大容量存储(如 HDD)。 - 可以独立清理
cache
(节省空间),而不会影响已安装的全局模块。
- 可以将
5. 总结
prefix
:存放已安装的全局模块(长期保留)。cache
:存放下载的原始包文件(临时缓存)。- 不会重复下载:同一个包的
.tgz
文件只会在cache
中存储一份,安装时仅解压到prefix
。
相关文章:

如何修改npm的全局安装路径?
修改 npm 的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g 安装的模块)和缓存文件存储到自定义路径。以下是详细步骤: 1. 创建自定义路径的目录 在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件…...

巧用 Element - UI 实现图片上传按钮的智能隐藏
引言 在前端开发中,使用 Element - UI 组件库来构建用户界面是非常常见的操作。其中图片上传功能更是在许多项目中频繁出现,比如用户头像上传、商品图片上传等场景。有时候,我们会有这样的需求:当上传图片达到一定数量后…...
Ubuntu18.04 升级最新版本Cmake
1.升级原因 ubuntu18.04默认安装的cmake版本为 3.10.2;在编译一些软件的时候,版本太低导致无法编译 2.从cmake官网下载二进制安装包 地址:https://cmake.org/download/ 包:cmake-4.0.1-linux-x86_64.tar.gz 3.上传下载好的安装包到ubuntu…...
关于mysql的事务和索引
1. 事务四大特性(ACID) 原子性:事务的操作要么全部成功,要么全部失败回滚,不可分割。 一致性:事务执行前后,数据必须满足业务规则(如账户总额不变)。 隔离性࿱…...

从“拼凑”到“构建”:大语言模型系统设计指南!
你有没有试过在没有说明书的情况下组装宜家家具?那种手忙脚乱却又充满期待的感觉,和设计大语言模型(LLM)系统时如出一辙。如果没有一个清晰的计划,很容易陷入混乱。我曾经也一头扎进去,满心期待却又手足无措,被网上那些复杂的架构图搞得晕头转向。于是,我坐下来,把它们…...
mybatis xml中特殊字符处理
1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封…...

【数据结构与算法】从完全二叉树到堆再到优先队列
完全二叉树 CBT 设二叉树的深度为 h , 若非最底层的其他各层的节点数都达到最大个数 , 最底层 h 的所有节点都连续集中在左侧的二叉树叫做 完全二叉树 . 特点 对任意节点 , 其右分支下的叶子节点的最底层为 L , 则其左分支下的叶子节点的最低层一定是 L 或 L 1 .完全二叉树…...
【linux】SSH 连接 WSL2 本地环境的完整步骤
SSH 连接 WSL2 本地环境的完整步骤 要在 Windows 的 WSL2 环境中启用 SSH 服务,并允许本地或局域网设备连接,需完成以下步骤: 1. 安装 openssh-server sudo apt update sudo apt install openssh-server -y2. 配置 sshd 修改配置文件 sud…...
vue项目前后端分离设计
在Vue前端架构中,通过分层结构和模块化设计实现高效的前后端分离,需要系统性规划各层职责、接口管理和数据流控制。以下是结合业界最佳实践的完整方案: 一、分层架构设计 1. 分层结构(自上而下) 层级职责示例技术实现…...

【Linux网络】构建类似XShell功能的TCP服务器
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

Spring Boot 配置源详解(完整版)
Spring Boot 配置源详解(完整版) 一、配置源加载顺序与优先级 配置源类型优先级顺序(从高到低)对应配置类/接口是否可覆盖典型文件/来源命令行参数(--keyvalue)1(最高)SimpleComman…...
JDK 17 与 Spring Cloud Gateway 新特性实践指南
一、环境要求与版本选择 1. JDK 17 的必要性 最低版本要求:Spring Boot 3.x 及更高版本(如 3.4)强制要求 JDK 17,以支持 Java 新特性(如密封类、模式匹配)和性能优化。JDK 17 核心特性: 密封类…...
异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)
本文介绍BCI中的跨脑电帽的迁移学习最新算法。 (发表于2025 arxiv,应该属于投稿阶段,这个场景具有非常不错的研究意义和前景) 最新跨脑电帽异构算法github开源代码 SDDA算法原文 一、脑机接口绪论 脑机接口(BCI)指在人或动物大脑与外部设备之间创建的直接连接,通过脑…...

puppeteer注入浏览器指纹过CDP
一、背景 通过puppeteer爬取目标网站时,经常会被对方网站检测到,比如原生puppeteerCDP特征非常明显,另外指纹如果一直不变,也会引发风控 二、实现 通过以下几行代码即可轻松过大部分检测点,并且能够切换指纹&#x…...
1.8软考系统架构设计师:系统架构设计师概述 - 练习题附答案及超详细解析
系统架构设计师概述综合知识单选题 每道题均附有答案解析: 架构设计师的定义、职责和任务 1、系统架构设计师的核心职责是: A. 编写具体功能模块的代码 B. 制定系统整体架构和技术选型 C. 管理项目预算和进度 D. 直接对接客户进行销售支持 答案&#x…...

软件项目实施全流程及交付物清单
需求分析 -> 概要设计 -> 详细设计 -> 开发实现 -> 测试 -> 部署 -> 运维 一、确认项目目标、范围和团队成员 二、收集和分析客户需求,确定需求规格 三、制定详细的项目计划,包括时间表、资源计划、预算 四、系统架构设计…...

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的
HTTP与HTTPS全面对比及HTTPS加密流程详解 一、HTTP与HTTPS核心区别 特性HTTPHTTPS协议基础明文传输HTTP SSL/TLS加密层默认端口80443加密方式无加密混合加密(非对称对称)证书要求不需要需要CA颁发的数字证书安全性易被窃听、篡改、冒充防窃听、防篡改…...

从梯度消失到百层网络:ResNet 是如何改变深度学习成为经典的?
自AlexNet赢得2012年ImageNet竞赛以来,每个新的获胜架构通常都会增加更多层数以降低错误率。一段时间内,增加层数确实有效,但随着网络深度的增加,深度学习中一个常见的问题——梯度消失或梯度爆炸开始出现。 梯度消失问题会导致梯…...
2025.4.26总结
今天把马良老师的《职场十二法则》看完后,感触极大,这们课程就是一场职场启蒙课。 虽然看过不少关于职场的书籍,但大多数是关于职场进阶,方法方面的。并没有解答“面对未来二三十年的职场生涯,我该怎么去看待自己的工…...

Uni-App 多端电子合同开源项目介绍
项目概述 本项目是一款基于 uni-app框架开发的多端电子合同管理平台,旨在为企业及个人用户提供高效、安全、便捷的电子合同签署与管理服务。项目创新性地引入了 “证据链”与“非证据链”两种签署模式,满足不同场景下的签署需求,支持多种签署…...

多语言笔记系列:共享数据
在笔记中共享数据(变量) 使用 .NET 交互式内核,可以在单个笔记本中以多种语言编写代码。为了利用每种语言的不同优势,您会发现在它们之间共享数据很有用。即一种语言的变量,可以在其它语言中使用。 默认情况下,.NET Interactive …...

如何使用SeedProd创建无缝的WordPress维护页面
不管您刚接触 WordPress ,还是经验丰富的站长,SeedProd 都是创建网站维护页面的得力助手。通过SeedProd,您可以轻松创建一个与网站风格一致、功能齐全的维护页面,让您的用户在网站维护期间也能感受到您的专业与关怀。本文将为您提…...

使用Python设置excel单元格的字体(font值)
一、前言 通过使用Python的openpyxl库,来操作excel单元格,设置单元格的字体,也就是font值。 把学习的过程分享给大家。大佬勿喷! 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…...
【PCB工艺】推挽电路及交越失真
推挽电路(Push-Pull Circuit) 推挽电路(Push-Pull Circuit) 是一种常用于功率放大、电机驱动、音频放大等场合的电路结构,具有输出对称、效率高、失真小等优点。 什么是推挽电路? 推挽是指:由两种极性相反的器件(如 NPN 和 PNP、NMOS 和 PMOS)交替导通,一个“推”电…...
告别手动映射:在 Spring Boot 3 中优雅集成 MapStruct
在日常的后端开发中,我们经常需要在不同的对象之间进行数据转换,例如将数据库实体(Entity)转换为数据传输对象(DTO)发送给前端,或者将接收到的 DTO 转换为实体进行业务处理或持久化。手动进行这…...
uv run 都做了什么?
uv run 都做了什么? uv run <命令> [参数...] 的主要作用是:在一个由 uv 管理或发现的 Python 虚拟环境中,执行你指定的 <命令>。它会临时配置一个子进程的环境,使其表现得如同该虚拟环境已经被激活一样。这意味着&am…...

求解,如何控制三相无刷电机?欢迎到访评论
问题:通过一个集成的TF2104芯片控制H桥上桥臂和下桥臂,如何控制?还是说得需要PWM_UH和PWM_UL分开控制?...
Java ThreadLocal与内存泄漏
当我们利用 ThreadLocal 来管理数据时,我们不可避免地会面临内存泄漏的风险。 原因在于 ThreadLocal 的工作方式。当我们在当前线程的 ThreadLocalMap 中存储一个值时,一旦这个值不再需要,释放它就变得至关重要。如果不这样做,那么…...

365打卡第R3周: RNN-心脏病预测
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…...
1.1.1 用于排序规则的IComparable接口使用介绍
在C#中,IComparable 是一个核心接口,用于定义对象的自然排序规则。实现该接口的类可以指定其实例如何与其他实例比较大小,从而支持排序操作(如 Array.Sort()、List.Sort()). 1. 该接口CompareTo返回值含义:…...