npm、cnpm、yarn 安装删除异同

背景

一直觉得npm、cnpm、yarn的安装删除基本一样用哪个都行,不过俗话说的好,实践出真知,这里记录一下今天简单测试得到的结果总结,如发现错误,希望大家评论指正一下,十分感谢。

测试电脑系统:Mac

初始化

步骤:在三个文件夹里分别执行以下命令

npm init

cnpm init

yarn init

结果都是添加了一个package.json文件

安装包

步骤:在三个文件夹里分别用三种命令安装包,然后在不同文件夹换命令安装,查看文件变化情况

npm i dayjs

  1. 较其他两种方式速度慢些
  2. 自动生成了package-lock.json
  3. node_modules中只有一个dayjs包
  4. dependencies依赖里有dayjs

yarn add moment 安装成功,package-lock.json中没有moment版本锁

cnpm i dayjs

  1. 没有生成lock文件
  2. node_modules里有两个包(不重要)
  3. dayjs没有加入到dependencies中,使用cnpm i dayjs -S才能加进去

yarn add dayjs

  1. 生成了yarn.lock文件
  2. node_modules里有dayjs包和.yarn-integrity文件(感觉是存储依赖版本的hash值,yarn check --integrity可能会用到)
  3. dependencies依赖里有dayjs

npm i moment 安装成功,yarn.lock中没有moment版本锁

删除包

删除步骤尝试略多,不赘述,直接一起总结。

总结

  1. 如下图,上面是npm、yarn安装的包,下面是cnpm安装的包
  2. npm i xxx 默认参数为 -S,改变package.json和package-lock.json,同时会删除掉cnpm安装的包(不管cnpm是否带参)
  3. npm r xxx,改变package.json和package-lock.json,同时会把没有在依赖里的其他包删除掉(比如没有加参数的用cnpm安装的包),有在依赖里的其他包会被更新
    变成

附一个小知识

yarn check                  //检查package.json里的依赖版本和yarn.lock里是否一致
yarn check --integrity  //检查package.json里的依赖版本的hash值和yarn.lock里是否一致,有助于验证包依赖没有更改

猜你喜欢

转载自www.cnblogs.com/macq/p/10642638.html