一个比NPM更快更安全可靠的JavaScript包管理工具——Yarn

Posted 刻刻帝丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个比NPM更快更安全可靠的JavaScript包管理工具——Yarn相关的知识,希望对你有一定的参考价值。

tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( ‘ω’ )و

【本文源址:http://blog.csdn.net/q1056843325/article/details/54950018 转载请添加该地址】

上一篇简单介绍了NPM包管理工具
在这篇文章中
我想给大家介绍一个取代使用NPM的包管理工具——Yarn
以及它与NPM之间的差异

#简介

这个就是Yarn的logo,应该是一只猫
Yarn的官网:传送门
来到官网,映入眼帘的就是这么几个大字(大单词~)

富强,民主,文明,和谐…
那是不可能的~
这行英语的意思是: 极速、可靠、安全的依赖关系管理


Yarn是Facebook、Google、Exponent和Tilde开发的一款新的javascript包管理工具(开源)
Facebook对于Github的贡献确实是有目共睹的,仅次于微软
开发Yarn意在解决了使用npm时面临的少数问题

  • 安装巨慢无比
  • npm安装时可以运行代码,不安全

#下载
我的电脑是Windows操作系统
按照官网的说明,下载.msi安装包
下载之前也必须有NodeJS

一步一步next就好了


还有一种方法官网没说直接通过命令行
我也是通过这种方法下载的
输入命令:npm intall -g yarn
不过我是卡了好几遍才下好(网太卡伤不起)

下载完毕后输入命令 yarn --version 查看版本

#使用
使用和npm是类似的
初始化包yarn init

这里我一开始用git bash发现不好使,会报错

后来还是老实的用cmd命令行


其实npm的命令和yarn大多相通的
只需要把npm换成yarn
不过还是有些不同的
添加包依赖使用命令:yarn add <package>
它相当于npm命令:npm install <package> --save
也就是说它会自动将下载包以及版本信息写入package.json的dependencies


  "name": "node",
  "version": "1.0.0",
  "main": "index.js",
  "repository": ,
  "license": "MIT",
  "dependencies": 
    "react": "^15.4.2"
  

yarn常用的命令以及和npm的对照如下

|yarn命令|含义|npm命令
|-
|yarn|根据package.json安装依赖|npm install
|yarn init|初始化包|npm init
|yarn add <package>|安装依赖并写入dependencies|npm install <package> --save
|yarn global add <package>|全局安装依赖并写入dependencies|npm install <package> -g --save
|yarn add <package> --dev/-D|安装依赖并写入devDependencies|npm install <package> --save-dev
|yarn upgrade <package>|升级包版本|npm update <package> --save
|yarn remove <package>|卸载包|npm uninstall <package> --save


更详细的请查看 官方文档

#yarn.lock
当我们下载依赖的时候,会发现目录下多了yarn.lock文件
它是很重要的文件,不要删掉它

转移到其他电脑的时候,要连同package.json和yarn.lock文件一起拷贝
然后输入命令 yarn下载模块


这个yarn.lock有什么好处呢?

使用NPM的时候,如果拥有相同package.json的两台电脑子安装了不同版本的包
就可能会产生一些问题
而Yarn为了避免包版本的错误匹配,将确定的安装版本固定这个锁文件yarn.lock中
每次添加模块,Yarn就会更新(首次创建)yarn.lock 文件
这样我们转移到其他电脑,也可以匹配为相同版本的模块
避免了版本不同产生的问题
(也就是查看package.json配置文件前,会先查看yarn.lock锁文件)

实际上NPM也可以实现类似的功能
使用 npm shrinkwrap 命令可以生成一个锁文件
但是使用NPM我们每次都需要手动“上锁”
而Yarn会自动更新 yarn.lock

#优势
想谈一谈yarn较npm的优势
把优势放在最后将确实有点奇怪
这也算有使用心得体验的成分

  • 急速
    • 下载速度真的很快,下载任务是并行下载,而npm是按顺序一个一个下
  • 缓存
    • 会缓存下载过的包,下载过的包甚至可以离线下载,npm就不能
  • 清晰
    • 输出不像npm一点儿也不冗余,并且进度条很形象,谁用谁知道
  • 安全
    • 下载前会检查签名及包的完整性
  • 可靠
    • 各平台依赖一致性,yarn.lock自动更新
  • 优化
    • 下载失败自动重新请求,以及对网络资源最大化利用,避免无用请求

综上,Yarn前途无量
(没准未来也会出现cyarn)

主页传送门

以上是关于一个比NPM更快更安全可靠的JavaScript包管理工具——Yarn的主要内容,如果未能解决你的问题,请参考以下文章

Yarn 能帮你解决的五件事

nodejs Yarn替代npm的包管理——快速安全可靠性高的依赖管理

为啥 UDP + 一个软件可靠的订购系统比 TCP 更快?

为啥数字数组,更多数据排序比对象数组更快,Javascript中的数据更少?

yarn使用 以及和npm对比

比容器更轻更快的虚拟机