初始yarn、yarn和Npm的区别

yarn英文官网

yarn是软件包管理器,允许世界上所有开发人员一起使用和共享代码,同时也是一个项目管理工具。使用yarn可以使项目安全、稳定,且可更容易复用。

yarn可以适用于小型项目或大型单体仓库。

yarn具有很多其他开发者共享的插件,我们在使用yarn时可以使用其他开发者的共享出来的插件来解决开发中遇到的问题,如果使用过程中遇到问题,我们可以在对应网站上使用issue进行报告问题或反馈,当问题修复后, 我们可以使用 Yarn 来更新这个解决方案,让它更新为被修复后的最新状态。

代码通过称为package(包)的东西共享。一个package包含所有共享的代码以及一个描述该package的package.json文件(称为manifest(清单))。

安装

一、全局安装

在整个系统中使用单个包管理器一直是一个问题。为了稳定,安装需要跨环境使用相同的包管理器版本,否则就会有在在版本之间引入意外破坏性更改的风险 - 毕竟,这就是为什么首先引入锁文件的概念!由于 Yarn 在某种意义上是您的第一个项目依赖项,因此“锁定”它也应该是有意义的。 

因此,Yarn 2 及更高版本旨在按项目进行管理。别担心,变化不大!只需确保首先安装我们将用于生成本地的全局 Yarn 二进制文件: 

npm install -g yarn

使用 yarn --vesion查看yarn是否安装成功,及其对于版本号。 

类似1.22的信息,

全局安装的 Yarn 是属于 “经典版本” 序列(即 1.x),这正是yarn开发者所期待的,这个系统的一个额外好处是,为 Yarn 1 配置的项目将继续使用它,而不是突然必须迁移到 2.x 配置格式。如果Yarn从一开始就被“锁定”了,我们就不需要这么做了。

二、项目安装

全局安装 Yarn 的最新版本:

npminstall-gyarn

进入你的项目文件夹:

cd~/path/to/project

运行以下命令:

yarnsetversion berry

"Berry" 是 Yarn 2 发布序列的代号,同时也是我们的 代码仓库 的名称!

提交新增和修改过的文件。参见 哪些文件需要被添加到 .gitignore 配置文件中?

大型项目的构建,最终目的需要持续高质量的生产在各种终端平台上可交付部署的代码。

三、更新到最新版本

如果您以后想将 Yarn 更新到最新版本,只需运行:

yarnsetversion latest

然后 Yarn 将从我们的网站下载最新的二进制文件,并将其安装到您的项目中。不要忘记运行新安装来更新依赖项,更新结果!

四、安装 master 分支的最新构建版本

随着时间的推移,即使最新版本也不够新了,那么你可能希望尝试最新的 master 代码分支,以检查 Bug 是否已修复。这在 Yarn 2 中已经变得非常简单了!只需运行以下命令即可:

yarnsetversion from sources

同样的,还可以使用 --branch 参数来指定要安装特定的 PR:

yarnsetversion from sources--branch1211

yarn和npm的区别

npm缺陷

npm install速度巨慢

同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。

"5.0.3",   //“5.0.3”表示安装指定的5.0.3版本

"~5.0.3",  // “~5.0.3”表示安装5.0.X中最新的版本

"^5.0.3"//“^5.0.3”表示安装5.X.X中最新的版本

这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。

安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误

Yarn的优势

速度快 。速度快主要来自以下两个方面:

并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 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 <package> 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn 简洁太多:默认情况下,结合了 emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。

多注册来源处理:所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。

更好的语义化: yarn改变了一些npm命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。

yarn和npm的主要区别介绍:

\1. yarn虽然和nom一样是本地缓存,但是yarn无需互联网链接就能安装本地缓存的依赖项,提供了离线模式,而这个是npm实现不了的。

\2. yarn解决了由于语义版本控制而导致的npm的不确定性问题,通过安装时创建的默认文件,确保使用的库的版本相同。

\3. yarn增加了一些能让开发人员并行化处理所有必需的操作,且通过添加了一些改进,使得运行速度有了显著的提升,整个安装时间也变得更少。

\4. npm的输出信息比较冗长,相比之下,yarn简洁很多。默认情况下,直观且直接地打印出必要的信息。

\5. yarn的语义相对于npm更加清晰,主要是因为yarn改变了一些npm的命令名称,看上去就更清晰了。

yarn 和 npm 命令对比

查看版本yarn --version

npm -version(或者 node -v)

安装淘宝镜像yarn config set registry 'https://registry.npm.taobao.org'

npm install -g cnpm --registry=http://registry.npm.taobao.org

初始化某个项目yarn init

npm init

默认安装项目依赖yarn install

cnpm install

安装依赖,并且默认保存到 packageyarn add xxx

cnpm install xxx --save

卸载依赖yarn remove xxx

cnpm uninstall xxx --save

更新依赖yarn upgrade xxx

cnpm update xxx --save

安装全局项目依赖yarn global add xxx

cnpm install xxx -g

安装特定版本号的项目依赖yarn add xxx@

cnpm install xxx@1.2.33 --save

发布/登录/登出,一系列NPM Registry操作yarn publish/login/logout npm publish/login/logout

运行命令yarn run/test

npm run/test

参考链接:https://www.jianshu.com/p/254794d5e741https://xcx.topsage.com/8986.html

https://zhuanlan.zhihu.com/p/291135958

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容