npm、cnpm、yarn 安装删除异同
背景
一直觉得npm、cnpm、yarn的安装删除基本一样用哪个都行,不过俗话说的好,实践出真知,这里记录一下今天简单测试得到的结果总结。
可能会有错误,希望大家评论指正,十分感谢。
测试电脑系统:Mac
初始化
步骤:在三个文件夹里分别执行以下命令
npm init
cnpm init
yarn init
结果都是添加了一个package.json文件
安装包
步骤:在三个文件夹里分别用三种命令安装包,然后在不同文件夹换命令安装,查看文件变化情况
npm i dayjs
- 较其他两种方式速度慢些
- 自动生成了package-lock.json
- node_modules中只有一个dayjs包
- dependencies依赖里有dayjs
yarn add moment
安装成功,package-lock.json中没有moment版本锁
cnpm i dayjs
- 没有生成lock文件
- node_modules里有两个包(不重要)
- dayjs没有加入到dependencies中,使用
cnpm i dayjs -S
才能加进去
yarn add dayjs
- 生成了yarn.lock文件
- node_modules里有dayjs包和.yarn-integrity文件(感觉是存储依赖版本的hash值,
yarn check --integrity
可能会用到)- dependencies依赖里有dayjs
npm i moment
安装成功,yarn.lock中没有moment版本锁
删除包
删除步骤尝试略多,不赘述,直接一起总结。
测试结果
- 如下图,上面是npm、yarn安装的包,下面是cnpm安装的包
npm i xxx
默认参数为 -S,改变package.json和package-lock.json,同时会删除掉cnpm安装的包(不管cnpm是否带参)npm r xxx
,改变package.json和package-lock.json,删除存在与依赖的包时,同时会把没有在依赖里的其他包删除掉(比如没有加参数的用cnpm安装的包),有在依赖里的其他包会被更新
由变成
cnpm i xxx / cnpm r xxx
只能安装 / 删除包,不改变任何配置文件cnpm i xxx / cnpm r xxx
带 -S / -D 参数时,只改变package.json,不改变锁文件yarn add xxx
默认参数为 -S,改变package.json和yarn.lockyarn remove xxx
找不到没有写入package.json依赖的包,无法删除;写入package.json依赖的可以删除yarn remove xxx
改变package.json和package-lock.json,删除存在与依赖的包时,同时会把没有在依赖里的其他包删除掉(比如没有加参数的用cnpm安装的包),有在依赖里的其他包会被更新
✨理论总结✨
能改变package.json的命令
- npm、yarn
- cnpm带 -S / -D 参数时
锁文件的改变
- package-lock.json文件只由npm改变
- yarn.lock文件只由yarn改变
- cnpm带不带参数都无法影响两个锁文件
cnpm安装的包会受到的影响
- npm、yarn安装包时会把cnpm不带 -S / -D 安装的其他包删除
- npm、yarn删除包时会把cnpm不带 -S / -D 安装的其他包删除,有在依赖里的cnpm安装的其他包会被更新
- npm安装包时会把cnpm带 -S / -D 安装的其他包删除,但package.json里依赖不会被删除,这时再执行npm删除,会按照依赖把误删的其他包装回来,但是继续安装不会装回来。(ps:有点秀~)
- yarn安装包时会把cnpm带 -S / -D 安装的其他包更新
- npm能直接删除cnpm不带 -S / -D 安装的包
- yarn不能直接删除cnpm不带 -S / -D 安装的包,会提示找不到包
(cnpm带不带 -S / -D归根结底是有没有在package.json中添加依赖)
附一个小知识
yarn check //检查package.json里的依赖版本和yarn.lock里是否一致
yarn check --integrity //检查package.json里的依赖版本的hash值和yarn.lock里是否一致,有助于验证包依赖没有更改
npm、cnpm、yarn 安装删除异同的更多相关文章
- npm cnpm yarn 安装
安装node.js,其中已经集成了npm,可以将npm切换到国内镜像 $ npm config set registry https://registry.npm.taobao.org -- 配置后可 ...
- npm(cnpm)介绍(安装gulp)
1.npm(node package manager) nodejs的包管理器,用于node插件管理(安装.卸载.更新.管理依赖等); 2.使用npm安装安装插件: 1).命令提示符执行 npm in ...
- 关于npm和yarn 安装vue脚手架
第一篇博客有点小紧张.轻喷~ 第一步:安装node.js 地址 --------https://nodejs.org/en/ 详细步骤这里就不写了 可以去看 地址 ----- ...
- npm\cnpm\yarn\tyarn 关于源和代理的问题
npm 是一个包管理器.Node.js 自带. cnpm 是 npm 的阿里版,用的阿里源. yarn 是另一个包管理器,不自带,需要另外装.可以单独装,也可以用 npm 装. tyarn 是 yar ...
- Nodejs NPM CNPM优雅安装install
由于npm和cnpm都能安装组件,安装的组件有的保存在c盘用户目录的Appdata隐藏目录下,有的保存在安装node的目录下,而且安装在c盘的话,重装系统又得重新部署,甚是麻烦,所以这里提供优雅安装的 ...
- npm cnpm yarn
npm 如何下载指定版本的组件 先确保文件目录下含有 package.json 文件, 没有的话,可以通过 npm init 创建, 然后只需要在组件的后面加上 @2.8.1 版本号即可, 例如:re ...
- Npm vs Yarn 之备忘大全
有则笑话,如此讲到:"老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成.我嘴一抽,来了句:人和动物最大的区别就是人会使用 ...
- npm安装删除模块以及cnpm淘宝镜像
npm安装模块 [$ npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [$ npm install -g xxx]利用npm安装全局模块xxx: npm 删除模块 ...
- 大话npm,cnpm和yarn
npm:基于node.js的包管理工具; 常用命令 npm install 包名; 缺点:因服务器在国外,所以下载包的速度超级慢,所以出现了cnpm和yarn cnpm:跟npm是一样的,这是淘宝出的 ...
随机推荐
- 7、字典和string的用法
#dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...
- [Kubernetes]容器日志的收集与管理
在开始这篇文章之前,首先要明确一点: Kubernetes 中对容器日志的处理方式,都叫做 cluster-level-logging ,也就是说,这个日志处理系统,与容器, Pod 以及 Node ...
- 011_TCP专项研究监控
(1)In Segs 数据源: /proc/net/snmp; 采集方式:累计值,每10秒采集一次取差值: 指标:net.snmp.tcp (key: system); In Segs: tcp协议层 ...
- 记一次简单的GetShell案例
案例链接: http://202.112.51.184:8007/ 打开链接,发现分了多个页面: 挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个 ...
- 如何使用npm构建一个react demo项目
方法一: 1) 安装node.js环境 点我进入nodejs官网 1.1) 下载LTS(Long term support)版本,安装 1.2) 在cmd中使用以下命令查看node是否安装成功 no ...
- python使用正则解析网络地址的各个部分
参考文章: https://www.cnblogs.com/ingd/p/6182571.htmlimport re def resolveAddress(url): ""&quo ...
- 经验分享:PDF怎么提取页面
PDF文件的页面有很多但有需要的并不是全部,有时候需要其中一页或几页的时候,这个时候我们就需要把单独的页面提取出来,这个时候应该怎么做呢,上次有小伙伴来询问小编,今天小编就为大家分享一下小编自己的编辑 ...
- IDEA下运行 mybatis报错 Parameter 'arg0' not found. Available parameters are [autoRecharge, id, param1, param2]
电脑换系统之后重新安装一了 一下idea 项目运行时出现了以下错误, [autoRecharge, id, param1, param2] 或 [arg0, id, arg1, param2] 参考地 ...
- Helm - Kubernetes服务编排的利器
Helm介绍 在Kubernetes中部署容器云应用(容器或微服务编排)是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具.通过Helm能够帮助开发者 ...
- zabbix编译安装
第一部分zabbix安装部署,实现分布式监控及网络知识 #yum install lrzsz.x86_64 传送文件 安装mysql脚本 #!/bin/bash DIR = pwd NAME = ...