当前位置:网站首页>关于npm/cnpm/npx/pnpm与yarn

关于npm/cnpm/npx/pnpm与yarn

2022-08-10 18:37:00 youhebuke225

package.json

dependencies

  • 安装在dependencies中的包,一般是线上的项目运行所依赖的包
  • 一般安装这里面的包,项目就可以正常运行了
  • 通过NODE_ENV=production npm i来进行安装

devDependencies

  • 开发环境所需要的包,一般一些工具包,我们都安装在这里面,如eslint等
  • 一些打包转义的工具包,一般也放在这里面,如webpackloader

包的版本

我们安装的包一般都是想如下

{
    
	...
    "core-js": "3.20.3",
    "css-loader": "^3.5.3",
    "es6-promise": "^4.1.0",
    "fast-sass-loader": "^2.0.1",
    ...
}

命名格式

  • "core-js": "3.20.3",他后面的就是版本号
    • 3是主版本号,代表的是不兼容的 API 修改
    • 20是次版本号,代表的是向下兼容的功能性新增
    • 3是修订号,代表的是向下兼容的问题修正
  • 此外,我们还会发现在版本号的前面,还有一些特殊的符号
    • ~表示我们在更新包的时候,只更新补丁版本
      • 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
    • ^表示我们在更新包的时候,更新补丁版本和此版本
      • 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
    • 如果没有前缀,则始终保持这个版本
      • 如果写入的是 0.13.0,则始终使用确切的版本。

package-lock.json

  • 从npm5版本之后,就推出了package-lock.json
  • package-lock.json的优先级会高于package.json,package-lock.json会固定当前项目的包版本
  • 想要更新package-lock.json,我们就必须使用命令npm update
    • 但是这样的话会把多有的依赖的包都升级
    • 还是推荐如果需要升级的话,就单独对一个包进行升级

npm

npm 是nodejs的标准的软件包管理器,通常,我们安装的包都在package.json中体现

  • 因为npm使我们比较常用的包管理工具,所以这里我们就不仔细介绍了
  • 常用命令 点击

yarn

  • yarn目前变现的比npm会快一些,是因为yarn目前安装是并行安装,而npm是串行安装
  • 在缓存机制上 ,两者都差不多,都会读取本地缓存
  • 但是在安装包的显示和设计上yarn会更友好一点
  • 常用命令 点击

cnpm

  • cnpm的镜像仓库在国内,也就是淘宝,我们可以全局安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 当然我们也可以把npm的镜像库设置为淘宝源
npm config set registry http://registry.npm.taobao.org
  • 需要注意的是cnpm没有package-lock.json,即我们使用cnpm的时候,他不会自动产生package-lock.json,即使项目中有package-lock.json他也是不管不顾的,只读取package.json
  • 这就会导致一些意想不到的bug,并且有时候cnpmnpm下载的包是不相容的
  • 所以,能用npm就尽量不是用cnpm

pnpm

简介

pnpm最大的特点就是

  1. 包安装速度极快
  2. 磁盘空间利用效率高
    1. 硬链接:硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
    2. 软连接:另外一种连接称之为符号连接,也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

也就是说

  1. 不会重复安装同一个包。使用npm/yarn 的时候,如果100个包依赖lodash ,那么就可能安装了100次lodash ,磁盘中就有100个地方写入了这部分代码。但是pnpm会只在一个地方写入这部分代码,后面使用会直接使用hard link
  2. 即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。举个例子,比如 lodash 有 100 个文件,更新版本之后多了一个文件,那么磁盘当中并不会重新写入 101 个文件,而是保留原来的 100 个文件的 hardlink,仅仅写入那一个新增的文件。

安装

官网

npm i pnpm -g

文章参考
文章参考二

原网站

版权声明
本文为[youhebuke225]所创,转载请带上原文链接,感谢
https://blog.csdn.net/youhebuke225/article/details/126155866