yarn和npm 都是包管理工具,但是yarn是为了弥补 npm 的一些缺陷而出现的
yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具
npm install
下载速度慢
重新 install 时速度依旧慢同一个项目,每次install,都是从网上下载
安装的无法保持一致性。
原因是因为 package.json 文件中版本号的特点导致的,下面三个版本号在安装的时候代表不同的含义。
"5.0.3" # 表示安装指定的5.0.3版本
"~5.0.3" # 表示安装5.0.X中最新的版本
"^5.0.3" # 表示安装5.X.X中最新的版本
(波浪符号(~)〕∶他会更新到当前minor version(也就是中间的那位数字)中最新的版本。
波浪符号处曾经npm安装时候的默认符号,现在已经变为了插入符号。
插入符号(^)∶这个符号就继得非常的灵活了,他将会把当前库的版本更新到当前major verson (也就是第一位数字)中最新的版本。
通俗理解:
波浪号为补丁版本最新版插入符号为小版本最新版
使用 npm 安装多个 js 包时,包会在同一时间下载和安装。
安装过程中,其中一个包抛出了一个异常,但 npm 会继续安装其他包,所以错误信息就会在一大堆提示信息中丢失掉,以至于直到执行前,都不会发现实际发生的错误。
1.1并行安装
无论 npm 还是 yarn 在安装包的时候,都会执行一系列任务。 npm 是按照队列执行每个 package,所以 npm 是串行的。
而 yarn 是并行的,它同步执行所有任务,性能得到了极大的提升。
1.2离线模式
如果使用 yarn 已经安装过一个软件包,再次安装时 yarn 会在之前的缓存中获取,而不会像 npm 再次从网络中下载。
为了保持安装版本的统一性,yarn 有一个锁定文件(lock file)。它记录了被确切安装上的模块的版本号。
每次只要新增一个模块,Yarn 就会更新 yarn.lock 这个文件。这么做保证了每一次拉取同一个项目依赖时,使用的都是一样的模块版本。
npm 也有办法实现使用相同版本的 packages
但需要开发者执行 npm shrinkwrap
命令。这个命令将会生成一个锁定文件,在执行 npm install
的时候,该锁定文件会先被读取,和 Yarn 读取 yarn.lock 文件一个道理。
npm 和 Yarn 两者的不同之处在于:Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
npm 的输出信息比较冗长。在执行 npm install 的时候,命令行里会不断地打印出所有被安装上的依赖。
Yarn :默认情况下,结合了 emoji 直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
多注册来源处理
所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装
语义化进行了修改
yarn 改变了一些 npm 命令的名称,比如 yarn add/remove 安装卸载模块,而 npm 是 install/uninstall 安装卸载模块。
1.安装node
下载地址:Node.js
2.安装yarn
npm install -g yarn
3、切换淘宝镜像
yarn config set registry https://registry.npm.taobao.org
这样安装完就可以使用yarn了
初始化 yarn init
安装依赖 yarn install 或者 yarn
新增依赖 yarn add element-ui
删除依赖 yarn remove element-ui
更新依赖 yarn upgrade
全局安装或删除 yarn global remove vue-cli
同时下载多个 yarn add axios vue-axios
初始化 npm init
安装依赖 npm install pnpm install
新增依赖 npm install element-ui --save pnpm i element-ui
删除依赖 npm uninstall element-ui --save …
更新依赖 npm update pnpm update
全局安装或删除 npm uninstall vue-cli -g …
同时下载多个 npm install --save axios vue-axios