你在用npm / yarn / pnpm管理Nodejs项目依赖?以及为什么?
从 npm 到 yarn ,最近爱上了 pnpm 。
2024年了你在用npm / yarn / pnpm管理Nodejs项目依赖?以及为什么?
已经用 pnpm 4 年了,第一次用它主要 2 个原因
1. 不会有幽灵依赖
2. 节约硬盘空间,有个 global 的 store 存 package
用的 bun,就为了 install 的时候提示信息少
Yarn, 以后有重新安装依赖会使用 bun, pnpm 之前用过一段时间, 但会出现打包后出现样式丢失的情况, 遂放弃
个人项目都转 pnpm 了
y a r n, 可以两只手各敲两个字母,p n p m 一只手挺累的,手动狗头
yarn ,因为标志是猫咪
#5 zsh-abbr
我要坚持 npm 不动摇
用 npm ,因为没有频繁拉包的需求,npm 似乎也没啥问题
npm
vscode 已经从 yarn 切换回 npm 。
当你使用 npm 时,其他包管理器都要声称“兼容 npm”,你使用的是一个公认的子集,一个最大公约数,任何你这能跑但别人不能跑的东西,都是别人的责任。
pnpm 提供的 monorepo 能力太棒了
维护项目
用 npm 。
每次安装、更新好依赖就打包成 node_modules.7z ,确保时间、空间上的一致性。
npm ,懒得折腾
pnpm monorepo
正常的跟时间走的用 pnpm, 老的还是 npm 控在文件夹内省些麻烦
惊呆,就没考虑二进制平台兼容性么
使用 pnpm ,npm 依赖问题太多了
yarn
维护的都是老项目,懒得动
yarn 习惯了
一直用 pnpm
pnpm 跑很多老项目会有依赖问题运行不起来, 一直用 yarn
npm +1
npm 。其实我不是很在意那点硬盘空间,有代理的话下包其实也不会太慢。
npm 主要好在它是自带的,有 node 就有 npm 。别人下了我的项目不用多余的步骤就能运行。
但是其实 yarn 和 pnpm 我也在用,只不过是二开的项目,这种就是纯粹的作者用啥我用啥嘞
我支持 pnpm 做话事人,因为他好用,省事。
新项目用 pnpm ,老项目没法用, 只能无奈 npm
npm => cnpm => yarn => pnpm => nrm => npm
必须是 pnpm, 因为快啊。npm i 要半天,换了 taobao 节点也不行。
alias 永久改成 p, 每次都是 p i, p i , p i
nrm ?不是同一个东西阿,怎么对比?
#25
#29
Node 现在自带了 corepack ,相当于 npm 、yarn 、pnpm 都自带了。package.json 里有 packageManager 字段的话会强制使用指定的包管理工具。
我知道,但这个东西是实验性的,而且得在 node 16.13 以上才能用。
而且确实属于多余的步骤。
alias yarn=pnpm 不用谢我朋友
npm 没啥问题,速度很快
各种用 yarn 的都用哪个版本?
用 yarn 因为早期 npm 和 cnpm 问题太多了,一直都用 yarn 了
最开始是用 npm ,属于入门阶段。然后尝试了 yarn ,它的特色是Zero-installs
,但是个人项目用不到。最后尝试了 pnpm ,被它的执行速度和 0 学习成本(对于 npm 的兼容性很好)所吸引,就停在了 pnpm 。
最近尝试了 bun ,主要是用来当作 TS 的解释器来用,也用来写一些脚本类型的项目,因为它提供的 API 比 Node.js 的 API 更加友好,冷启动速度也更快。
测试过 bun 和 node.js 在 Linux 作为自己的一个后端 JS 程序的 Runtime ,两者(JIT 暖机后)性能、内存占用基本一致,没什么差距。
bun 从刚出来就开始用。一开始有各种各样的问题,到现在问题很少了。开始在服务器上也运行它。
只有在兼容性遇到问题才会回退到 pnpm ,再不行才是 npm 。这些情况都很少遇到。
之前用 pnpm ,公司项目用 pnpm ,现在自己玩已经换 bun 了,心智负担低
之前 pnpm ,现在 bun
pnpm ,速度快,报错相对较少 www
2024 了,推荐用更现代的 bun
小项目 bun ,大一些的用 pnpm
不是对比,是箭头路径的意思,就是说我从 npm 换了一圈最后还是换回了 npm
那跟 NRM 有啥关系?
用 yarn ,之前用 npm 的时候一些大项目下,性能跟不上,总是卡半天; pnpm 在处理依赖会有些问题,要么就是版本冲突,依赖找不到,要么就是打包的时候丢东西
用其他包管理器发现依赖处理有问题。
作者:我只保证 npm
优先用 bun ,出问题了再用 pnpm
现在看到一个项目还在用 yarn 就会下意识地觉得这个项目已经过时了,会失去对这个项目的好感
插个题外话 monorepo 做 cicd 痛苦啊
一用上 pnpm 就离不开了,速度快,提示信息友好,说是能节省磁盘空间,懒得去考证,但看到 node_modules 里很多库都是软链接的,相信是能节省空间
当然,还有秒开 monorepos ,用起来太过于舒服
如果涉及到 cicd 的流水线的话,还是推荐 npm,yarn 其他 pnpm,bun 很多平台都不支持
用 npm 。
我不会遇到 npm 装不上包的问题。nrm 切 mirror 地址,遇到 github 资源下不动的直接 tun 模式代理启动。
没感觉到有装包慢的问题,和 java 比下载 jar 包文件大编译又慢的 maven 体验好太多了。
坚持 NPM 一百年不动摇
如果是 node 就用 pnpm ,当然 bun 比 node + npm 好用很多,单纯从包管理来看 deno 比前面俩都好
作为一名IT技术人员,在2024年我仍然使用npm、Yarn和pnpm来管理Node.js项目的依赖。以下是我选择这些工具的原因及示例:
- npm:Node.js默认的包管理器,易于使用且社区支持广泛。它允许我通过简单的命令安装、更新和卸载依赖。例如,安装Express框架的命令为
npm install express
。npm的缺点是安装大型项目时可能较慢,且偶尔会出现依赖树不一致的问题。 - Yarn:由Facebook等大公司联合开发,旨在解决npm的性能问题。Yarn具有更快的安装速度和更好的依赖一致性,通过
yarn.lock
文件锁定依赖版本。使用Yarn安装Express的命令为yarn add express
。Yarn适合需要快速安装和一致性保证的项目。 - pnpm:一个高效的包管理器,使用硬链接避免重复存储相同的包,从而节省磁盘空间。pnpm的安装速度也非常快,且支持并发安装。使用pnpm安装依赖的命令为
pnpm install
。对于大规模项目或持续集成环境,pnpm的性能优势尤为明显。
综上所述,我选择这些工具主要是基于它们的性能、易用性和社区支持。在实际项目中,我会根据项目需求选择合适的包管理器来管理依赖。