workbuddy ,node.js 每次会在 项目目录上安装 node_modules,能不能一次安装多次使用,为什么 npm 不把包装在全局

作者:zhangfeng1133日期:2026/6/10

workbuddy ,node.js 每次会在 项目目录上安装 \node_modules ,而不是把他放到node.js的安装目录 或者系统的path 中导致 ,类似的功能 都要载入 安装 程序包 很慢

你的问题核心是:npm 默认把包安装在项目本地 node_modules,每次新建项目都要重新 npm install,耗时且冗余。这是 npm 的设计哲学问题,我来解释清楚并提供解决方案。


为什么 npm 不把包装在全局?

npm 的设计原则是 依赖隔离

方式优点缺点
项目本地安装(默认)版本隔离,A项目用 lodash@4,B项目用 lodash@3,互不冲突每个项目重复下载,磁盘空间占用大,安装慢
全局安装一次安装到处使用版本冲突噩梦;项目不可移植(换个机器就跑不起来)

所以 npm 选择了前者——保证可复现性优先于磁盘/时间效率。


但这确实很慢,怎么办?

方案一:换用 pnpm / yarn(推荐)

这是目前最实际的解法。它们共享一个全局硬链接缓存,同一版本的包下载一次后,跨项目直接硬链接,不再重复下载:

工具特点安装
pnpm硬链接,省磁盘(全局 store),安装极快npm i -g pnpm
yarn有全局缓存(~/.yarn/cache),离线安装npm i -g yarn

以 pnpm 为例,在 F:\WorkBuddy_work\ 下执行:

1# 全局安装一次
2npm install -g pnpm
3
4# 之后用 pnpm 代替 npm
5cd F:\WorkBuddy_work\2026-06-07\apptainer-video
6pnpm install
7

效果:第一次下载 lodash 到全局 store(如 C:\Users\Administrator\AppData\Local\pnpm\store),之后 10 个项目用同一版本 lodash 时,全部硬链接,秒级完成


方案二:利用 npm 自身缓存

npm 也有缓存机制(%APPDATA%/npm-cache),命中缓存时可以跳过下载:

1# 查看缓存位置
2npm config get cache
3
4# 优先使用缓存(已经是默认行为,但可确认)
5npm install --prefer-offline
6

但这只减少网络下载,不会减少 node_modules 的物理复制,磁盘空间照样重复占用。


方案三:设置全局 node_modules 并 link(不推荐,仅了解)

1npm install -g lodash
2npm link lodash   # 在项目中创建符号链接
3

问题:版本冲突、不可移植,开发中极少用。


总结建议

你的场景(多项目频繁安装相同依赖)最适合 pnpm

1npm install -g pnpm
2# 之后所有项目用 pnpm install,一次下载永久复用
3

它能解决你两个痛点:

  1. 安装快 — 全局 store 缓存,跨项目硬链接
  2. 省磁盘 — 不是复制,是硬链接,实际只存一份

简单说:npm 的 node_modules 不能直接"搬进"全局缓存,因为它和 pnpm 的存储格式不兼容。但不用慌,你的包已经下过一次了,有办法不浪费这份下载。


实际情况图解

1你现在的状态:
2  npm 全局缓存 (%APPDATA%/npm-cache)   已有 lodash 等包的 .tgz 压缩包(下载后自动存的)
3  项目 node_modules/                   解压后的实际文件(这一份没法复用)
4
5想要的状态:
6  pnpm 全局 store                      所有包只存一份原始文件
7  项目A node_modules/                  硬链接,0字节额外占用
8  项目B node_modules/                  硬链接,0字节额外占用
9

正确做法:一步切换到 pnpm

1# 1. 全局安装 pnpm(只需一次)
2npm install -g pnpm
3
4# 2. 进入你的项目,复用现有 node_modules 生成锁文件(避免重新解析依赖树)
5cd F:\WorkBuddy_work\2026-06-07-13-01-17\apptainer-video
6pnpm import
7

pnpm import 会读取你现有的 node_modules,生成 pnpm-lock.yaml,然后:

1# 3. 删掉旧的 node_modules(这是 npm 格式的,pnpm 用不了)
2rm -rf node_modules
3
4# 4.  pnpm 重新安装
5pnpm install
6

这次安装虽然会重新下载,但只有 这一次。之后所有项目用同样版本的包,pnpm 直接从全局 store 硬链接,不再重复下载。


不想重新下载?还有一个取巧的办法

如果真的一秒都不想多等,可以用 --offline 强制 npm 用本地缓存安装(不联网),然后让 pnpm 复用:

1cd F:\WorkBuddy_work\2026-06-07-13-01-17\apptainer-video
2
3# npm 离线重装(从 %APPDATA%/npm-cache 取,不联网)
4npm install --prefer-offline
5
6# 然后 pnpm import + 切换
7pnpm import
8rm -rf node_modules
9pnpm install --prefer-offline   # pnpm 也会尝试用自身缓存
10

但说实话 不如直接联网跑一次 pnpm install,因为包已经在你本机 npm cache 里了,pnpm 再从 registry 拉一次很快(大部分包就是几 MB)。


一句话总结

你现在要做的命令
装 pnpmnpm i -g pnpm
进项目生成锁文件pnpm import
删旧 node_modulesrm -rf node_modules
重新装一次pnpm install

**只痛这一次,以后全自动复用。

不是自动的pnpmnpm 是两个独立的命令,你调用哪个就用哪个:

你输入行为
npm install还是走 npm,包复制到项目 node_modules
pnpm install走 pnpm,硬链接到全局 store

所以将来你手动创建项目时,记得用 pnpm 代替 npm 就行:

1pnpm init          # 代替 npm init
2pnpm add react     # 代替 npm install react
3pnpm install       # 代替 npm install
4

想让 WorkBuddy 也自动用 pnpm?

这就涉及 WorkBuddy 的使用习惯了。我可以帮你记一条规则:以后 Node.js 项目都用 pnpm 管理依赖,这样每次 WorkBuddy 帮你搭项目或装包时,会自动调用 pnpm 而不是 npm

告诉workbudyy这个偏好 pnpm

输入对话框 :把这个偏好记下来?以后你在任何项目里让我装 npm 包,我都会走 pnpm。


workbuddy ,node.js 每次会在 项目目录上安装 node_modules,能不能一次安装多次使用,为什么 npm 不把包装在全局》 是转载文章,点击查看原文


相关推荐


数据同步的几种姿势
小跟班_mya2026/6/3

先搞清楚一件事:为什么要有 ES 数据同步? 想象一下,你开了一家图书馆: MySQL 是图书管理员,负责把书一本本摆好、登记在册(增删改查、事务保证)Elasticsearch 是图书检索系统,用户输入"三体",0.01 秒就能告诉你第几排第几架(全文检索、聚合分析) 问题来了:管理员刚上架了一本新书,检索系统怎么立刻知道这本书的存在?这就是数据同步要解决的事。 方案一:同步双写——"一边记账一边贴标签" 场景 你开了个电商网站,用户下单后,订单既要存到 MySQL(方便财务对账


Vibe Coding 全栈实战:章鱼哥解题 07|功能跑通后的架构收敛
小小小小小鹿2026/5/28

Vibe Coding 全栈实战:章鱼哥解题 07|功能跑通后的架构收敛 上一期做完对话持久化以后,章鱼哥已经不只是一个“能回答问题”的接口了。它有了登录态,有了当前对话,有了 LangGraph thread,也能在刷新页面后恢复最近的消息。 但功能跑通以后,我回头看了一下后端模块依赖,发现了两个不太舒服的地方。 一个是 agent 依赖了 chat: agent.nodes → chat.question_classifier 另一个是 infra.llm 依赖了 rag.context_


开发了一个管理本地开发环境的软件
神奇的程序员2026/5/5

前言 前阵子换了新电脑,我在整理本地开发环境时,看到一堆需要重新装的,顿时感觉好麻烦。想着都过去这么久了,应该有工具可以做到统一管理,实现快速安装、更新、切换版本吧。 经过一番查找后,找到了mise这个东西,只需要简单的一句命令就能安装java、node、redis、go等工具,而且还支持对这些工具做统一管理(更新、删除),支持三大主流平台(macOS/Windows/Linux) 命令行始终不方便,于是我萌生了一个做GUI的想法,花了亿点时间用Flutter把它开发出来了,欢迎各位有需要的开发


Hello 算法:“走一步看一步”的智慧
灵感__idea2026/4/26

每个系列一本前端好书,帮你轻松学重点。 本系列来自上海交通大学硕士,华为高级算法工程师 靳宇栋 的 《Hello,算法》 “走一步看一步”,是我们面对不断变化的世界所采取的应对策略。 多数时候,我们无法对未来做出准确预测,只能根据上一件事的结果对下一件事做决策。介绍“分治”的时候,我们已经接触过这种策略。本篇主角依然如此,但又有所不同。 先看个例子。 爬楼梯 给一个 n 阶楼梯,每步可以上 1 阶或者 2 阶,问有多少种方案可以爬到楼顶? 假设 n 是3,那么方案共 3 种。如下图所示。 这


Linux 驱动开发入门:从最简单的 hello 驱动到硬件交互
4. 嵌入式铲屎官2026/4/17

Linux 驱动开发入门:从最简单的 hello 驱动到硬件交互 🎉 写给未来的自己和领导:本文是 Linux 驱动开发的 入门级保姆教程,从零开始搭建驱动框架,逐行解释代码,记录每一个踩过的坑。无论你是刚接触内核编程,还是想快速上手 GPIO 中断,都能在这里找到清晰的思路和可复现的步骤。 📚 目录 引言:驱动是什么?驱动的基本框架 —— 一切皆文件实战:第一个 hello 驱动 3.1 完整的驱动源码(带详细注释)3.2 编译驱动 —— Makefile 解析3.3 上机测试 ——


深入剖析 Redis 经典面试题
Thomas.Sir2026/4/9

1、什么是Redis?它主要用来什么的? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、


260331-OpenWebUI统计所有Chat的对话字符个数
GuokLiu2026/4/1

1 OWUI启动脚本 # Open-WebUI Settings export DATA_DIR='data0331' export ENABLE_SIGNUP=True export DEFAULT_USER_ROLE='admin' export DEFAULT_GROUP_ID='xai' export OFFLINE_MODE=false export HF_HUB_OFFLINE=1 # OpenAI API 配置 export ENABLE_OLLAMA_API=false ex


[LangChain智能体本质论]中间件是如何参与Agent、Model和Tool三者交互的?
JaydenAI2026/3/23

LangChain的中间件(Middleware)是围绕Agent执行流程构建的“可插拔钩子系统”。它允许开发者在不修改核心逻辑的情况下,在执行的关键节点(如输入处理、模型调用前后、输出解析等)对数据流进行拦截、修改或验证。中间件类型以AgentMiddleware为基类。 1. AgentMiddleware AgentMiddleware是一个泛型类型,两个泛型参数分别代表状态和静态上下文的类型,我们可以利用state_schema字段得到状态类型。它的name属性返回中间件的名称,默认返回


haproxy案例项目(haproxy+dns+nginx+nfs+keepalived)
爱莉希雅&&&2026/3/15

HAProxy+Nginx+NFS+DNS 部署笔记 一、环境规划 主机名IP 地址安装软件角色说明haproxy192.168.72.100/24haproxy负载均衡器nginx1192.168.72.10/24nginx、nfs-utilsWeb 节点 1(挂载 NFS 共享)nginx2192.168.72.20/24nginx、nfs-utilsWeb 节点 2(挂载 NFS 共享)nfs192.168.72.30/24nfs-utilsNFS 文件共享服务器dns192.168.


Spring Cloud+AI :实现分布式智能推荐系统
我不是呆头2026/3/7

欢迎文末添加好友交流,共同进步! “ 俺はモンキー・D・ルフィ。海贼王になる男だ!” 引言 在当今数字化时代,推荐系统已成为电商平台、内容分发平台、社交网络等互联网产品的核心竞争力之一。从淘宝的"猜你喜欢"、抖音的精准内容推送,到 Netflix 的影视推荐,优秀的推荐系统不仅能显著提升用户留存率和转化率,更能为企业带来可观的商业价值。据统计,亚马逊约 35% 的销售额来自推荐系统,Netflix 则通过推荐算法为用户节省了每年约 10 亿美元的搜索成本。 然而,随着业

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读