pnpm(全称 Performant NPM)
你可以理解为性能更好的 npm
在 pnpm
的官网是这么介绍的:pnpm
是一个快速的,节省磁盘空间 的 包管理工具
前两者 快速的
、节省磁盘空间
很容理解。
那么什么是包管理工具呢?
每种主流编程语言都有包管理工具,比如:
Java
的 Maven
、Gradle
Python
的 pip
Nodejs
的 npm
、yarn
、pnpm
等。包管理工具的主要作用是管理第三方依赖,也可以看成一个 "轮子" 工厂,每个人都可以上传自己造的 "轮子" 和下载使用别人的 "轮子",包管理工具顾名思义就是统一管理这些轮子的软件或者工具,它以多种方式自动处理项目依赖关系、提供了命令行工具(CLI)、支持跟踪依赖项和版本等功能, 除此之外还可以安装、卸载、更新和升级包,配置项目设置,运行脚本等等。
有了包管理工具,我们可以很简单地构建一个项目或者引入和管理一个库,留给我们的则是愉快地编码。
而我们要将的正是 Nodejs
包管理工具中的一款:pnpm
pnpm
项目创立的初衷是为了节约磁盘空间并提升安装速度:
npm
时,依赖每次被不同的项目使用,都会重复安装一次。 而在使用 pnpm
时,依赖会被存储在内容可寻址的存储中(即只用安装一次即可)上面是推特上一张非常形象描述 pnpm
的图片,已经被 pnpm
的作者收纳到了官网。
那么 pnpm
是如何做的呢?要理解 pnpm 做了什么,可能我们需要讲一些操作系统的知识。
硬链接(hard link)
:
符号链接(Symbolic link)
又称软链接(soft link)
:
Symbolic link
)是一类特殊的文件;硬链接和软链接的图解:
注意:硬链接和符号链接不是拷贝,拷贝最终会生成两份文件,而硬链接和软链接始终只有一份
使用 npm
或 Yarn
时,如果你有 100
个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100
份该相同依赖包的副本。
如果是使用 pnpm
,依赖包将被 存放在一个统一的位置,因此:
npm
或 Yarn Classic
安装依赖包时,所有软件包都将被提升到 node_modules
的 根目录下。
我们应该如何安装 pnpm
呢?
最简单的方式就是通过 npm
安装即可
npm i install -g pnpm
以下 是一个与 npm 等价命令的对照表,帮助你快速入门:
npm 命令 | pnpm 等效 |
---|---|
npm install | pnpm install |
npm i <pkg> | [pnpm add <pkg> ] |
npm run <cmd> | [pnpm <cmd> ] |
npm uninstall <pkg> | pnpm remove <pkg> |
更多命令和用法可以参考pnpm的官网:https://pnpm.io/zh/
在 pnpm7.0
之前,统一的存储位置是 ~/.pnpm-score
中的;
在 pnpm7.0
之后,统一的存储位置进行了更改:<pnpm home directory>/store
在 Linux
上,默认是 ~/.local/share/pnpm/store
在 Windows
上: %LOCALAPPDATA%/pnpm/store
在 macOS
上: ~/Library/pnpm/store
我们可以通过一些终端命令获取这个目录:获取当前活跃的store目录
pnpm store path
另外一个非常重要的 store
命令是 prune(修剪)
:从 store
中删除当前未被引用的包来释放 store
的空间
pnpm store prune
本文作者:叶继伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!