1. 简介

Fast, disk space efficient package manager:

  • Fast. Up to 2x faster than the alternatives (see benchmark).
  • Efficient. Files inside node_modules are linked from a single content-addressable storage.
  • Great for monorepos.
  • Strict. A package can access only dependencies that are specified in its package.json.
  • Deterministic. Has a lockfile called pnpm-lock.yaml.
  • Works as a Node.js version manager. See pnpm env use.
  • Works everywhere. Supports Windows, Linux, and macOS.
  • Battle-tested. Used in production by teams of all sizes since 2016.
  • See the full feature comparison with npm and Yarn.

作用:

  1. 自由切换node版本,当多个项目对node版本依赖不同时,相当于nvm
  2. 节省 磁盘空间,开发过程中,项目目录下的 node_modules 文件其实是个类似于快捷方式的东西,它会集中管理npm包,不必每个项目都下载一遍npm包依赖
  3. 我是菜鸡,我没有用到其他niubility的功能

2. 下载

  • github : Release - pnpm/pnpm

    下载后得到 pnpm-win-x64.exe,将其重命名为 pnpm.exe,这一步主要是便于使用,不然以后使用pnpm时必须写 pnpm-win-x64

3. 配置

下载得到的文件,即为可执行文件,不是安装包,所以不用安装,只需要剪切到自己想安装的文件夹中即可

3.1 配置环境变量

  • PNPM_HOME

    这个环境变量值为 pnpm.exe 所在的文件夹,我的放在 E:\pnpm\

  • PNPM_CONFIG_FILE

    这个环境变量值为 pnpm配置文件的路径,默认路径 C:\Users\[当前用户名]\AppData\Local\pnpm\config\rc,如果觉得无所谓配置文件位置,则不处理即可。

3.2 配置pnpm

因为没有使用pnpm初始化命令,所以 PNPM_CONFIG_FILE指向的文件暂时还没有生成,可以在自己指定的位置新建一个同名的文件,该配置文件没有后缀名,它就叫 rc

然后记事本在rc文件中写入如下内容,根据自己需要的位置进行修改路径,这些路径都是pnpm以后下载包的文件夹,以及相关缓存的文件夹,最后一个是npm的镜像(当前为淘宝)

global-dir=E:\pnpm\global
bin-dir=E:\pnpm\bin
store-dir=E:\pnpm\cache
registry=https://registry.npmmirror.com

上面配置文件等价的命令,命令执行结果会写入该文件,所以可以直接修改该文件内容:

 pnpm config set global-dir "E:\pnpm\global"
pnpm config set bin-dir "E:\pnpm\bin"
pnpm config set store-dir "E:\pnpm\cache"
pnpm config set registry https://registry.npmmirror.com

读取配置内容命令:

PS C:\Users\10794> pnpm config list
cache=E:\nodejs-repository\node_cache
prefix=E:\nodejs-repository\node_global
registry=https://registry.npmmirror.com
user-agent=pnpm/10.4.1 npm/? node/v20.11.1 win32 x64

3.3 初始化

在cmd 或 powershell执行:

pnpm setup

我当初没有先配环境变量和重命名为pnpm.exe,后期又重新配了一次,下图仅参考:



如果前期没有做任何配置,那么该命令作用是 复制下载的exe到C盘的C:\Users\[用户名]\AppData\Local\pnpm\文件夹中,然后起了一个叫 PNPM_HOME的环境变量,然后把PNPM_HOME的环境变量放到Path下,作用就是能在cmd或powershell中能直接使用pnpm来指定pnpm.exe(具体路径省略)。

!!!IMPORTANT : 该命令生成的环境变量全放在用户变量下面,而不是系统变量,如果有需要,自己在系统变量下手动搞一次,但是我推荐使用用户变量

4. 使用

  1. 安装node

    pnpm env add --global 【node版本号】,如:
pnpm env add --global 16.15
# 安装最新长期支持版
pnpm env add --global lts
# 安装最新长期版
pnpm env add --global latest
  1. 指定/切换本地node

    pnpm env use --global 【node版本号】,如果pnpm发现本地没有该版本,将会下载并应用,如:
pnpm env use --global 16.15
# 安装最新长期支持版
pnpm env use --global lts
# 安装最新长期版
pnpm env use --global latest
  1. 下载npm包可以使用pnpm install ,也可以使用npm,毕竟node带有npm

附:

  1. AI生成的命令图

pnpm 安装和使用的更多相关文章

  1. Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

    前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...

  2. NodeJS安装(Mac版本)

    nvm,node,npm之间的区别 nvm:nodejs 版本管理工具. 也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本. nodejs:在项目开发时的所需要的代码库 npm:n ...

  3. uniapp小程序迁移到TS

    uniapp小程序迁移到TS 我一直在做的小程序就是 山科小站 也已经做了两年了,目前是用uniapp构建的,在这期间也重构好几次了,这次在鹅厂实习感觉受益良多,这又得来一次很大的重构,虽然小程序功能 ...

  4. Vite+TS带你搭建一个属于自己的Vue3组件库

    theme: nico 前言 随着前端技术的发展,业界涌现出了许多的UI组件库.例如我们熟知的ElementUI,Vant,AntDesign等等.但是作为一个前端开发者,你知道一个UI组件库是如何被 ...

  5. electron 应用开发优秀实践

    vivo 互联网前端团队-Yang Kun 一.背景 在团队中,我们因业务发展,需要用到桌面端技术,如离线可用.调用桌面系统能力.什么是桌面端开发?一句话概括就是:以 Windows .macOS 和 ...

  6. 使用VitePress搭建及部署vue组件库文档

    每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...

  7. 从0搭建vue3组件库: 如何完整搭建一个前端脚手架?

    相信大家在前端开发中都使用过很多前端脚手架,如vue-cli,create-vite,create-vue等:本篇文章将会为大家详细介绍这些前端脚手架是如何实现的,并且从零实现一个create-kit ...

  8. 一个实用的 vite + vue3 组件库脚手架工具,提升开发效率

    无论是 vue2 全家桶还是 vue3 + vite + TypeScript,组件库的使用几乎大家都会,但自己开发一个独立组件库就不是每个人都掌握的,因为搭建组件库的基础开发环境,就会让很多同学望而 ...

  9. 初探富文本之OT协同实例

    初探富文本之OT协同实例 在前边初探富文本之OT协同算法一文中我们探讨了为什么需要协同.为什么仅有原子化的操作并不能实现协同.为什么要有操作变换.如何进行操作变换.什么时候能够应用操作.服务端如何进行 ...

  10. vue-vite-ts 新版

    Vue 后台管理系统 一.系统创建 1.1.环境检测 $ node -v v18.10.0 $ npm -v 9.1.2 ## 若没有该命令 需要用 npm install -g pnpm 安装 $ ...

随机推荐

  1. Net使用EasyNetQ简化与RabbitMQ的交互

    Net使用EasyNetQ简化与RabbitMQ的交互 EasyNetQ是一个为.NET环境设计的RabbitMQ客户端API,旨在简化与RabbitMQ的交互. 关于RabbitMq的更多知识点在: ...

  2. vue3笔记 - 父子组件通信

    父传子 说明:父组件将数据绑定在组件标签上:子组件props接收 父组件: <template> <Child :msg="msg" /> </tem ...

  3. Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated

    Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated 升级到Flutter 2.5 版本后,启 ...

  4. Unity 3D更换默认脚本编辑器VisualStudio

    由于VisualStudio 30天试用到期了,所有不能编辑Unity 3D脚本.需要更换成Notepad++ 打开Unity 3D顶部菜单 点击编辑(Editor)->Preferences- ...

  5. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教程)

    1.简介 本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这 ...

  6. 今天记录一下小程序使用微信客服api,而不是小程序客服

    小程序客服缺少很多东西,并且只能使用button的开放能力,所以尝试使用一下微信客服,自己开发客服又比较麻烦,秉着能免费绝不花钱的想法,接下来就直接写代码,也就是api,记录下来方便使用 wx.ope ...

  7. JVM实战—13.OOM的生产案例

    大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 + 禁NIO的显式GC) 3.一次微服务架构下的R ...

  8. cookie和session的详解与区别-copy

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  9. 十四款常见的Web前端开发框架

    在做web开发的时候经常会遇到一个问题,那就是,选择什么样的框架来做前端开发.下面封程中把目前常用的一些前端的框架简单的给大家介绍一下. 1. BootstrapBoostrap绝对是目前最流行用得最 ...

  10. RestTemplate 详解

    RestTemplate 简介 RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求.POST 请求.PUT ...