pnpm的安装与使用

news2024/12/28 19:43:43

pnpm使用

官网: https://www.pnpm.cn/installation

简介

1、概念

performant npm ,意味“高性能的 npm”。pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为“最先进的包管理工具”

2、特点

速度快、节约磁盘空间、支持单一代码库-monorepo、安全性高。
pnpm 相比较于 yarn/npm 这两个常用的包管理工具在性能上也有了极大的提升,根据目前官方提供的 benchmark 数据可以看出在一些综合场景下比 npm/yarn 快了大概两倍。

3、存储管理

按内容寻址、采用symlink

4、依赖管理

npm1、npm2采用递归管理,npm3、npm3+、yarn依赖扁平化管理消除依赖提升。
pnpm依赖策略: 消除依赖提升、规范拓扑结构

5、安全

之前在使用 npm/yarn 的时候,由于 node_module 的扁平结构,如果 A 依赖 B, B 依赖 C,那么 A 当中是可以直接使用 C 的,但问题是 A 当中并没有声明 C 这个依赖。因此会出现这种非法访问的情况。 但 pnpm 自创了一套依赖管理方式,很好地解决了这个问题,保证了安全性。

全局安装

npm install pnpm -g

pnpm -v

# 升级版本
pnpm add -g pnpm to update 

设置源

// 查看源
pnpm config get registry 

// 切换淘宝源
pnpm config set registry https://registry.npmmirror.com/

常用命令

安装与构建

pnpm install <package-name>  // 
pnpm i <package-name>
pnpm add <package-name>    // -S  默认写入dependencies
pnpm add -D    // -D devDependencies
pnpm add -g    // 全局安装

# 安装项目依赖
pnpm install

# 构建 packages
pnpm build

# 运行项目
pnpm run dev

# 运行 demo 方便开发,会自动打开浏览器
pnpm dev:demo --open

移除

pnpm remove 包                            //移除包
pnpm remove 包 --global                   //移除全局包

更新

pnpm up                //更新所有依赖项
pnpm upgrade 包        //更新包
pnpm upgrade 包 --global   //更新全局包

设置存储路径

# 安装完记得重启下环境使其生效
# windows环境不好整就直接重启,重启后指定目录会生效
pnpm config set store-dir /path/to/.pnpm-store

个人使用

一些需要node-gyp的包一定要记得安装好

在系统上禁止使用脚本解决方法

# 以管理员身份运行power shell
set-executionpolicy remotesigned

问题记录

出现类似包不能解析的问题:

解决:

  • 方式一

a. 根目录创建 .npmrc 文件

shamefully-hoist = true

b. 删除node_modules,再次执行pnpm install ,解决成功。

有些包仅在根目录的node_modules时才有效,可以通过此配置,提升那些不在node_modules根目录的包。
  • 方式二
pnpm i --shamefully-hoist

两种方法均测试成功。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五分钟理解Linux磁盘逻辑卷管理LVM

LVM概念 LVM&#xff08;Logical Volume Manager&#xff0c;逻辑卷管理&#xff09;是Linux环境下对磁盘分区进行管理的一种机制。LVM的工作原理其实很简单&#xff0c;它就是通过将底层的物理硬盘抽象的封装起来&#xff0c;然后以逻辑卷的方式呈现给上层应用。在传统的磁盘…

【iOS】iOS持久化

1 持久化目的 快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 节省用户流量&#xff08;节省服务器资源&#xff09; 对于较大的资源数据进行缓存&#x…

容器管理工具 portainer可视化面板 的安装及使用

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 什么是portainer Portainer是一款轻量级的Docker图形化管理的方案&#xff0c;相比k8s和k3s&#xff0c;只需…

Dev C++下载安装

1、下载 下载地址&#xff1a;Dev-C download | SourceForge.nethttps://sourceforge.net/projects/orwelldevcpp/ 点击“Download”下载 新建文件夹用于安装 2、安装 双击exe文件执行安装程序&#xff0c;选择“English”&#xff08;我没看到普通话&#xff09; 选择“I …

简单的语音广播功能方案

方案介绍&#xff1a; 1&#xff09;前端可以复用如下播放器的方案 &#xff08;或自行实现&#xff09; 其中&#xff0c;rtp封装过程中&#xff0c;额外增加了2字节的长度信息&#xff0c;后端服务接收之后&#xff0c;做好校验之后&#xff0c;需要剔除2个字节的数据头 2&a…

.Net Core依赖注入

.Net Core依赖注入 往期文章&#xff1a; .ner Core实现接口限流.net Core程序发布到IIS(Window Server 2019) 文章目录 .Net Core依赖注入前言一、ICO 和DI和DLICO [控制反转]DI [依赖注入]DL [依赖查找] 二、.net Core 中的依赖注入【Autofac】瞬时模式作用域模式单例模式尝…

Android Dalvik 虚拟机(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 1.Java 语言在Android 上运行流程 2.虚拟机发展过程 3.Android Dalvik 模式 4.Android N 中dex2oat 原理以及模式 5.如何判断dex2oat 采用的相关参数 6.如何查看dex2oat 的log 7.什么时候进行dex2oat 8.手机反应慢的原因 9.解…

再获权威认可!MIAOYUN荣获中国信通院一云多芯优秀案例,荣登《云管理产品与服务图谱》

2023年7月25日&#xff0c;以“云领创新&#xff0c;算启新篇”为主题的2023可信云大会在北京国际会议中心顺利召开。会上中国信息通信研究院发布了一云多芯稳定安全运行优秀案例和业界首个《云管理产品与服务图谱&#xff08;2023&#xff09;》。成都元来云志科技有限公司&am…

QEMU源码全解析12 —— QOM介绍(1)

接前一篇文章&#xff1a;QEMU源码全解析11 —— 定义一个QEMU模块&#xff08;3&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 前几…

springboot创建并配置环境(一) - 创建环境

文章目录 一、介绍二、启动环境Environment的分析三、进入源码四、创建环境1. 如何确定应用类型2. 测试 一、介绍 在springboot的启动流程中&#xff0c;启动环境Environment是可以说是除了应用上下文ApplicationContext之外最重要的一个组件了&#xff0c;而且启动环境为应用…

5点搞透电阻选型

一提到电阻&#xff0c;大家肯定会想到一个人&#xff1a;欧姆。 欧姆(Georg Simon 0hm&#xff0c;1787~1854年)是德国物理学家。生于巴伐利亚埃尔兰根城。欧姆定律及其公式的发现&#xff0c;给电学的计算&#xff0c;带来了很大的方便。 人们为了纪念他&#xff0c;将电阻的…

前端css--导航栏效果

效果如下&#xff1a; <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>导航栏动态效果</title><link rel"stylesheet" href"./style/style.css"> </head> &…

51单片机:数码管和矩阵按键

目录 一:动态数码管模块 1:介绍 2:共阴极和共阳极 A:共阴极 B:共阳极 C:转化表 3:74HC138译码器 4:74HC138译码器控制动态数码管 5:数码管显示完整代码 二:矩阵按键模块 1:介绍 2:原理图 3:矩阵按键代码 一:动态数码管模块 1:介绍 LED数码管&#xff1a;数码管是一种…

【数字IC】芯片产业链

芯片产业链 FoundaryFablessEDADesign ServiceIP供应商IDM就业岗位 Foundary Fabless 无晶圆厂 IC design house EDA Design Service Veri Silicon &#xff1a; 芯原微 Alchip&#xff1a;世芯&#xff08;上海&#xff09; Brite&#xff1a;灿芯&#xff08;上海&…

Vue+ElementUI操作确认框及提示框的使用

在进行数据增删改查操作中为保证用户的使用体验&#xff0c;通常需要显示相关操作的确认信息以及操作结果的通知信息。文章以数据的下载和删除提示为例进行了简要实现&#xff0c;点击下载以及删除按钮&#xff0c;会出现对相关信息的提示&#xff0c;操作结果如下所示。 点击…

“数字化员工”,正在占领厂区

劳动力规模逐年降低、劳动生产率增速被平均工资增速超越——中国企业正在面临用工难题。为了应对这一困境&#xff0c;唯一的解决方案就是全面转向“第四种用工模式”——“数字化劳动力”&#xff0c;它可以全力激活人效潜能&#xff0c;并助力企业行稳致远。 智能中央立库中的…

放射组学增强的深度多任务学习用于头颈癌预后预测

文章目录 Radiomics-enhanced Deep Multi-task Learning for Outcome Prediction in Head and Neck Cancer摘要本文方法实验结果 Predicting Regions of Local Recurrence in Glioblastomas Using Voxel-Based Radiomic Features of Multiparametric Postoperative MRI摘要方法…

猿人学第二题—混淆 动态cookie检测

猿人学第二题—混淆 动态cookie检测 1、代码格式化检测2、检测global和navigator.vendorSub3、检测setInterval思考 4、console.log输出检测补环境 简单的document.cookie&#xff0c;location.reload等就不写了 1、代码格式化检测 这里应该是利用了字符串正则匹配性能低的特点…

管理类联考——写作——素材篇——论说文——可持续发展——食蚁兽

巴西热带雨林中的食蚁兽在捕食时&#xff0c;使用带粘液的长舌伸进蚁穴捕获白蚁&#xff0c;但不管捕获多少&#xff0c;每次捕食都不超过3分钟&#xff0c;然后去寻找下一个目标&#xff0c;从来不摧毁整个蚁穴。而那些没有被食蚁兽捕获的工蚁就会修复蚁穴&#xff0c;蚁后也会…

【C++进阶之路】继承篇

文章目录 前言一、概念二、性质1.赋值转换2.作用域——隐藏/重定义3.默认成员函数①构造函数②拷贝构造③析构函数④赋值重载 4.友元函数5.多继承①单继承—— "一脉单传"②多继承——"一父多子"③菱形继承—— "一子多父"④菱形虚拟继承 三、总…