网站后台密码如何破解,免费观看电影电视剧的app下载,网站下载地址,网站建设功能是什么
pnpm#xff0c;一个老牌的 node.js 包管理器#xff0c;支持 npm 的所有功能#xff0c;完全足以用来替代 npm。它采用全局存储#xff0c;每个项目内部使用了硬链接#xff0c;所以很省空间#xff0c;安装速度快。
本文介绍下 pnpm 的基本概念#xff0c;安装、…
pnpm一个老牌的 node.js 包管理器支持 npm 的所有功能完全足以用来替代 npm。它采用全局存储每个项目内部使用了硬链接所以很省空间安装速度快。
本文介绍下 pnpm 的基本概念安装、卸载、使用原理可能遇到的问题及解决办法。
阅读本文需要一点前端基础最好有过 Node 使用经历。
在 pnpm 出现之前…
和其他编程语言的包管理器不同Node 会将安装的依赖放在每一个项目内。也就是说如果你有两个项目并且都用到了某个依赖那么这个依赖会在两个项目内都下载一份。
这就导致有很多重复的依赖被下载浪费了不少时间占用了不少磁盘空间当删除某个项目哪怕是小项目的时候删除时间也会变得很长。
当然换个角度想也可以算好处
对于设计 npm 的人来说这是最省事的包依赖方法。就好比 Maven 安装依赖之后自动将 jar 包安装到项目的 lib 里面可以随意改代码。node_modules 里面的东西可以随便改无需担心对其它项目的影响。 而 pnpm 将所有依赖存储在硬盘上的某一位置。当软件包被被安装时包里的文件会硬链接到这一位置而不会占用额外的磁盘空间这允许我们跨项目地共享同一版本的依赖安装时间也会快很多——因为对于已经有的依赖不用再次下载。
简介
pnpm全称 Performant npm意思为“高性能的 npm”。pnpm 由 npm/yarn 衍生而来解决了 npm/yarn 内部潜在的 bug极大的优化了性能扩展了使用场景被誉为最先进的包管理工具。
官网支持中文https://pnpm.io
开源在 GitHubhttps://github.com/pnpm/pnpm目前已获 30k Star
特点
快速比 npm 快了近 2 倍可以参考官方的 测试结果高效node_modules 中的所有文件均克隆或硬链接自单一存储位置支持 monorepos大型前端项目的代码管理方式权限严格默认创建了一个非平铺的 node_modules因此代码无法访问任意包流行数十家大公司都在用微软字节跳动ShopeeVue…更多和 npm/yarn 的功能比较可以参考官网的说明…
安装
安装之前最好先确定好安装什么版本的 pnpm因为它并不兼容 Node.js 的所有版本。官方列出的表格
Node.jspnpm 7pnpm 8pnpm 9Node.js 12❌❌❌Node.js 14✔️❌❌Node.js 16✔️✔️❌Node.js 18✔️✔️✔️Node.js 20✔️✔️✔️
可以通过 node -v 来查看当前 node 版本然后就可以安装了支持多种安装方式请参考 官方安装文档这里列两个
通过 Node 安装npm i -g pnpm通过 HomeBrewbrew install pnpm
注意
不能通过 cnpmyarn 安装如果要指定版本可以先通过 npm view pnpm versions 查看所有版本然后安装时指定npm i -g pnpm7.0.1
安装完后重新打开 cmd查看当前 pnpm 版本
pnpm -v
配置
安装好后我们可以做些配置使其更好用。
配置镜像源
当我们使用 pnpm也是要从镜像源去下载包的我们可以看看当前的镜像地址
pnpm get registry
or
pnpm config get registry
我们可以全局设置新的镜像地址例如淘宝源
pnpm set registry https://registry.npmmirror.com
如果想单独为某个项目设置
pnpm config set registry https://registry.npmmirror.com --save
其他源
腾讯云https://mirrors.cloud.tencent.comcnpmhttps://r.cnpmjs.org
配置完后可以再次查看下当前的源确保修改生效。
题外话可以看到 pnpm 和 npm 的配置相关命令格式很像这是因为 pnpm uses npms configuration formats.
配置安装包路径
pnpm 会将下载后的包放到默认路径下。除了依赖还有缓存等数据也会放到默认路径。
我们可以修改这个默认路径例如放到 D 盘
# pnpm 全局仓库路径(类似 .git 仓库)
pnpm config set store-dir D:\pnpm\store # pnpm 全局安装路径
pnpm config set global-dir D:\pnpm\global # pnpm 全局安装包的 bin 路径
pnpm config set global-bin-dir D:\pnpm\global-bin # pnpm 创建 pnpm-state.json 文件的目录该文件仅用于 pnpm 内部的更新检查器使用
pnpm config set state-dir D:\pnpm\state # pnpm 全局缓存路径
pnpm config set cache-dir D:\pnpm\cache
配置完后可以检查下
# 查看全局安装包位置
pnpm config get global-bin-dir# 或者
pnpm store path# 也可以查看所有配置
pnpm c get
配置环境变量
在某些情况下可能需要手动配置环境变量以确保 pnpm 能够全局访问。例如在我修改了全局安装包路径后。
我们可以先运行 pnpm setup它会添加环境变量。注意
看看是否存在名为 %PNPM_HOME% 的环境变量没有则创建值为刚刚指定的路径例如 D:\pnpm\global-bin在系统变量 PATH 里添加 %PNPM_HOME%
配置别名
pnpm 有四个字母我感觉还是蛮长的我们可以给其设置别名提高效率。在官网的安装文档里也有说
想在 POSIX 系统上添加永久别名只需在 .bashrc, .zshrc, or config.fish 文件里添加
alias pnpnpm
想在 Windows 里添加先在具有管理员权限的 Powershell 窗口中执行
notepad $profile.AllUsersAllHosts然后在 profile.ps1 文件里键入如下内容
set-alias -name pn -value pnpm保存文件并关闭。需要关闭所有打开的 Powershell 窗口能使别名生效。
还有网友专门写了个项目my-pnpm内置了各种缩写非常方便
使用
pnpm 的使用和 npm 差不多
含义npm 命令pnpm 命令安装所有依赖npm installpnpm install安装指定包npm install packagepnpm add package移除指定包npm uninstall packagepnpm remove package运行脚本npm run 脚本pnpm 脚本
可以看到运行脚本时pnpm 不需要添加参数 run更简洁。
例如全局安装 yrm一个管理镜像源的包
pnpm i -g yrm
在项目内使用也是一样的。我们可以随机打开一个项目将 node_modules 删掉然后执行 pnpm i输出的内容大致长这样
可以看到有 reused即利用了已经下载过的 192 个依赖downloaded 为 0说明没有下载新的依赖。
此时新的 node_modules 大概长这样
可以看到依赖项减少了很多直接依赖都会在 node_modules 里列出来可以很方便地看源码而其他的则都放到了 .pnpm 文件夹里。
此外还能看到一个 pnpm-lock.yaml 文件这个也是用来锁定版本的
更新和卸载
pnpm 是在不断更新中的想用新版本一条命令即可
pnpmp self-update
如果想要卸载请参考官方文档https://pnpm.io/zh/uninstall
最后
pnpm 日常使用起来还是不错的速度快节省了很多时间推荐使用。
参考
Pnpm包管理的新星如何颠覆 Npm 和 Yarn
PNPM 设置全局包的安装路径给 PNPM 设置不一样的家
pnpm 基本详细使用教程安装、卸载、使用、可能遇到的问题及解决办法
PNPM包管理工具_哔哩哔哩
原文pnpm包管理的新星平替 npm 和 yarn