• 了解一下pnpm


    pnpm早在五年前就发布了第一个正式的版本,一直到现在使用的还是不多。抛开速度和安全性(并不觉得这两点是抛开npm或者yarn的重点),高效利用磁盘空间和支持monorepo是最大的特性。

    之前分享monorepo也提到了,尤雨溪把vue3和vite迁移使用pnpm,所以未来的包管理工具会不会是pnpm?

    还有一个信息是,node在16.9.0之后实验性的新增了管理包的管理工具corepack
    Corepack is an experimental tool to help with managing versions of your package managers.

    有趣的是Corepack现在只支持pnpm和yarn,当强制使用pnpm或者yarn的时候,用另外一种就会被拦截无法使用(npm却不会被拦截),而且还能强制使用pnpm或者yarn的版本,不需要自己手动下载某个pnpm或者yarn的版本。

    都在说node官方现在对npm开始不满,因为npm越来越商业,还被GitHub收购,再加上yarn和pnpm这些包管理工具的突起,所以另外搞个cli替代npm,就是不知道哪个大版本会正式启用Corepack。

    npm早期是node_modules嵌套,到后面yarn出现,node_modules平铺,新增lock等,npm把yarn实现的都实现了。如果都依赖一个相同的包,就会在各自的目录下创建node_modules文件夹。

    回到pnpm对磁盘空间的高效利用(monorepo就是这点的天然产物),官网地址
    项目初衷:节约磁盘空间并提升安装速度

    使用pnpm的开源项目还是蛮多的:
    https://pnpm.io/workspaces#usage-examples

    很多东西好好看看官网就了解了,这边就不复制官网的一些介绍,但是,自己通过旧项目进行了几个测试,发现pnpm并不好用。

    我并不了解硬链接和原始链接,我只是最简单的把项目复制几份,然后用pnpm install安装依赖,发现每一个项目node_modules还是占用磁盘空间,然后通过看盘符使用的空间,发现还是占用了。而官网常见问题里面的解释并不能理解:
    https://pnpm.io/zh/faq#does-pnpm-work-across-multiple-hard-drives-or-filesystems

    也有人说Linux测试是正确的,可能我使用的方式不对?需要使用junctions才能在Windows看见效果?。文件系统根目录下的.pnpm-store也找到了,

    还有最重要的一点,我用了三个项目使用pnpm安装依赖,结果三个项目都运行不了,也并不没有想着去解决。看来使用pnpm并没有像官网说的那样直接平替npm、yarn。又或者说pnpm专门为了monorepo而生?

    最后,并不是不想拥抱新的技术,只是在我个人感受来说,yarn、npm现在的各种缺点我完全是能接受的,磁盘空间?对我来说,我的项目不会多到需要优化磁盘空间。

    欢迎关注订阅号 coding个人笔记

  • 相关阅读:
    【Flink伪分布式环境搭建及应用,Standlong(开发测试)】
    添加过的PDF注释可以修改吗?怎么修改PDF注释?
    机器学习笔记 - 图解对象检测任务(2)
    Java面试进阶指北
    C#关于TimeSpan结构的使用和获取两个时间差
    ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
    js数组方法归纳——concat、join、reverse
    Python标准库之os
    Redis6.0.6的三大内存过期策略和八大淘汰策略
    Spring-Boot-Starter 学习笔记(1)
  • 原文地址:https://blog.csdn.net/wade3po/article/details/126302540