pnpm:高效、快速的npm

2023-10-27

什么是pnpm

performent npm:速度快、节省磁盘空间的软件包管理器

为什么使用pnpm

使用npm安装依赖时,每次都会下载文件到硬盘中,,当项目数量较多时,依赖包会占据大量的内存,pnpm就是解决这个问题的。

pnpm如何解决 :

pnpm把依赖包存放在统一的位置

  • 如果你的同一依赖包使用相同的版本,那么磁盘上只有这个依赖包的一份文件
  • 如果你对同一依赖包需要使用不同版本,则仅有版本之间不同的文件会被存储起来
  • 所有的文件都保存在硬盘上的统一的位置,因此:
    • 当安装软件包时,其包含的所有文件都会硬链接到此位置,而不会占用额外的硬盘空间
    • 这让你可以在项目之间方便地共享相同版本的依赖

如何实现

软链接和硬链接的概念

软链接(符号链接)

符号链接是一类特殊的文件,其包含有一条以绝对路径或者相对路径的形式指向其他文件或者目录的引用。

对文件引用的引用

硬链接

电脑文件系统中的多个文件平等地共享同一个文件存储单元,删除一个文件名字后,还可以用其他名字继续访问该文件。

访问图标与硬盘数据直接链接

pnpm 安装依赖时,当 pnpm 文件夹中没有依赖包时会下载依赖到硬盘中,当已经存在对应的依赖包时,则不会再次下载。

当安装完毕后 pnpm 会在项目文件的 node_modules 中创建对于依赖包的硬链接,这样当创建多个项目时引用同一个依赖只需要创建硬链接就可以。这样不管创建多少个项目同一依赖的文件只有一份。

使用

# 初始化项目
pnpm init

# 安装依赖
pnpm add axios

# 获取存储依赖的pnpm目录
pnpm store path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pnpm:高效、快速的npm 的相关文章

随机推荐

  • vue3表格导出Excel(全网最细)​

    1 安装插件 npm install save xlsx 0 17 3 npm install save file saver 2 0 5 2 新建一个js文件夹放编写的js 在src下新建htmlToExcel js文件 然后再htmlT
  • CentOS 安装 opencv, 解决 Python cv2 module 问题(终极解决方法)

    下载安装包 wget https github com opencv opencv archive 2 4 13 zip 1 从官网下载 opencv 2 4 13 zip 2 执行安装 如果提示文件opencv 2 4 13 zip太大可
  • Java 随机读写流 复习题

    题目 在记事本中输入若干同学的姓名和成绩等信息作为原文件 编写一个Java源程序 其中的文件读写部分使用RandomAccessFile类来完成 程序实现的功能如下 编写一个包含主方法main的公共类 访问权限为public的类 主方法ma
  • Git从下载到配置到链接远程仓库全套教程

    目录 前言 一 Git的下载与安装 1 下载 2 安装 二 生成及配置SSH密钥 1 生成SSH密钥 2 配置SSH密钥 三 本地仓库与远程仓库连接并推送到远程仓库 总结 前言 每次进一个新公司都要下载配置git 这些东西也就配置那一次 所
  • pyqt 自定义信号,对默认信号触发的槽函数添加参数

    from PyQt5 QtCore import QObject pyqtSignal class QTypeSignal QObject sendmsg pyqtSignal object 使用pyqtSignal类实列发射信号 obje
  • Cuda

    文章目录 引言 一 Cuda安装 1 选择Cuda版本 2下载及运行安装程序 3 测试 二 Cudnn安装 1 进入官网下载对应cuda版本的cudnn 2 下载好相应版本并进行解压安装 3 解压完成后 4 测试 引言 学习的最大理由是想摆
  • Java知识点之Map(一)

    Map Map相关的内容在面试过程中都是一个重要的点 问深了会涉及到很多数据结构和线程相关的问题 你了解Map吗 常用的Map有哪些 Map是定义了适合存储 键值对 元素的接口 常见的Map实现类有HashMap Hashtable Lin
  • @RunWith注解的作用

    RunWith注解的作用 RunWith就是一个运行器 RunWith JUnit4 class 就是指用JUnit4来运行 RunWith SpringJUnit4ClassRunner class 让测试运行于Spring测试环境 Ru
  • 不容错过的Vue2.0组件开发

    简述 http www jianshu com p 313f11bccb33 utm source tuicool utm medium referral 本文针对于有Vue有一定基础的人学习了解 环境搭建等入门教程网上很多 大家自行学习
  • [ 注意力机制 ] 经典网络模型1——SENet 详解与复现

    Author Horizon Max 编程技巧篇 各种操作小结 机器视觉篇 会变魔术 OpenCV 深度学习篇 简单入门 PyTorch 神经网络篇 经典网络模型 算法篇 再忙也别忘了 LeetCode 注意力机制 经典网络模型1 SENe
  • 增程式电动汽车电控系统优化方法【matlab】

    一 主要内容 针对增程式电动汽车的传动系统架构 结合增程式乘用车和增程式电动公交的设计 对传动系统关键部件选型匹配以及电控系统工作模式进行论述 并论述了工况对行驶里程 以及电池充放电的影响因素 对通用汽车的Volt增程式电动汽车进行分析研究
  • B站价值60亿跨年晚会背后的微服务治理

    B站价值60亿跨年晚会背后的微服务治理 大家都知道微服务有两个痛点 一个是如何拆分微服务 微服务的边界怎么划分制定 二是微服务上了规模之后如何管理 因为只要上了规模 任何小小的问题都可能会被放大 最后导致雪崩效应 一 微服务化带来的挑战 上
  • 《Spring 5.x源码解析之Spring AOP 注解驱动使用及其实现原理》

    Spring 5 x源码解析之Spring AOP 注解驱动使用及其实现原理 学好路更宽 钱多少加班 mercyblitz 一 前言 大家好 欢迎阅读 Spring 5 x源码解析 系列 本篇作为该系列的第二篇 重点介绍Spring AOP
  • 离线搭建深度学习环境

    离线搭建深度学习环境 文章目录 离线搭建深度学习环境 Anaconda3离线安装 借助可联网PC下载安装包 安装Anaconda3 配置深度学习环境 获取深度学习环境 打包深度学习环境 拷贝深度学习环境 添加深度学习环境到环境列表 有时出于
  • Linux使用套接字 udp协议传输

    第一步是来认识库 需要哪些库 需要哪些库中的函数 哥们也只是 初学者 仅仅只是会调用的地步 后面有机会再加深 首先咱们需要清除的知道工作流程 第二步是直接写代码 开发工具 qtcreator6 环境 win10 虚拟机 ubuntu20 0
  • Vue学习杂记(五)——loader的使用

    Vue学习杂记 五 loader的使用 一 什么是loader 二 loader处理css 三 loader处理图片 四 loader处理高级的js语法 参考文献 引言 loader其实也是webpack系列的内容 考虑到webpack涉及
  • gradle使用教程,小白一篇就够

    概述 Gradle是新一代构建工具 从0 x版本一路走来虽然国内可寻的资料多了一些 但都是比较碎片化的知识 官方的Userguide虽然是业内良心之作 但无奈太长 且版本变化较快 又鉴于很多同学一看到英文内心便已认定无法读懂 遂打算利用业余
  • E tensorflow/stream_executor/cuda/cuda_dnn.cc:352] Loaded runtime CuDNN library: 5005 (compatibility

    WARNING tensorflow From usr local lib python2 7 dist packages tensorflow python util tf should use py 170 initialize all
  • MySQL逻辑架构图分析

    MySQL逻辑架构图 大体来说 MySQL 可以分为 Server 层和存储引擎层两部分 Server层 大多数MySQL的核心服务功能都在这一层 包括连接器 查询缓存 分析器 优化器 执行器 以及所有内置函数 日期 时间 数学 加密函数等
  • pnpm:高效、快速的npm

    什么是pnpm performent npm 速度快 节省磁盘空间的软件包管理器 为什么使用pnpm 使用npm安装依赖时 每次都会下载文件到硬盘中 当项目数量较多时 依赖包会占据大量的内存 pnpm就是解决这个问题的 pnpm如何解决 p