浅谈Facebook发布的JavaScript包管理器的 5 大功能
沉沙 2018-07-23 来源 : 阅读 1151 评论 0

摘要:本篇JavaScript教程探讨了Facebook发布的JavaScript包管理器的 5 大功能,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

Yarm 是 Facebook 开发的一个 Javascript 软件包管理器。它为 Javascript 程序员提供了快速,可靠和安全的依赖包管理。以下是 Yarn 的五大功能。

1. 可离线工作

Yarn 拥有离线工作的能力。具体来说既是,之前安装过的软件包可在离线状态下再次安装,不需要网络连接。典型的例子如下:

当有网络连接时,笔者通过 Yarn 安装了两个软件包:

用 yarn init 创建了一个 package.json

用 yarn 安装 express 和 jsonwebtoken

安装完毕

在安装写成后,笔者直接把原目录里的 node_moduels 删除并断开网络连接,然后运行 yarn:

Yarn 在离线状态下安装了软件包

Voilá! 两秒之内所有的软件包就再次被安装。显然,Yarn 缓存了下载过的软件包所以不用再次下载。同时它并行化的操作最大化地使用了资源,使得安装速度前所未有地快。

2. 从多个 registry 安装

Yarn 支持从不同的 registry 中安装 Javascript 软件包,比如从 npm, bower, git repository,甚至是本地文件。

默认情况下,它会从 npm registry 搜索并安装软件包:

yarn add <pkg-name>

也可以安装通过远程的 gzipped tarball 安装包:

yarn add <https://thatproject.code/package.tgz>

或者通过本地的文件系统安装:

yarn add file:/path/to/local/folder

这对于经常发布 Javascript 软件包的程序员特别地有帮助。因为可以在发布前通过 Yarn 安装到本地进行测试。

安装在 git resository 的包:

yarn add <git remote-url>

Yarn 也会自动探测在 bower registry 是否有 git repository ,如有会把它当成一个来自 git repository 的包一样对待,进行安装。

3. 快速获取软件包

假如你使用过 npm,你一定有过这样的经历:运行 npm install,去看个电影再回来查看是否所以所有包已经安装完成。当然,这有点夸张,但是 npm 真的花了很多时间在遍历依赖包树和下载依赖包。用 Yarn 的话,安装时间则已从几分钟缩减到几秒钟。

Yarn 把请求高效地排序好并避免瀑布式的请求,以最大化地使用网络。它首先把请求发送到 registry 并同时递归地查找每一个依赖包。接下来,Yarn 会从一个全局性的缓存目录中查看请求包是否下载过。如果没有,Yarn 获取 tarball 包并把它放到缓存目录中供下次使用,避免重复下载。

在安装时,Yarn 并发化的操作使得安装过程更加快速。笔者分别用 npm 和 yarn 从零安装了 jsonwebtoken,express 和 lodash,结果当 Yarn 完成安装时,npm 仍在继续。

4. 自动锁定软件包版本

Npm 有一个特点叫 shrinkwrap,意在锁定依赖包的版本以便在生产环境使用。shrinkwrap 的问题在于每一个开发者必须手动运行 npm shrinkwrap 以生成 npm-shrinkwrap.json 文件,而这一过程很容易被人们忽略!

对 Yarn 来说,这又是另一种情况。yarn.lock 是在安装过程中自动生成的,就像 PHP 程序员熟悉的 composer.lock 一样。yarn.lock 文件锁定了软件包的版本和所有的依赖包。有了这个文件,就可以确保团队的每一个成员都使用同一个版本的软件包,部署也变得容易,不会有意料之外的错误。

5. 安装依赖包在所有机器上都一致

Npm 安装依赖包可以为开发者创建文件结构,但可能程序员 A 的 node_modules 目录跟 B 的不一样。这是因为 Npm 用的一种非决定性的方式安装依赖包。这种安装方式有时就是造成 “在我系统里运行正常” 这一常见问题的原因。

Yarn 就没有这个问题。版本锁定文件和安装算法的存在,确保了依赖包安装不管在开发环境还是生产环境,会生成一模一样的文件和文件结构。

还有一点(标题是 5 大功能,但是笔者实在太想分享关于 Yarn 的优点了),企业要求可以列出依赖包许可证的类型。Yarn 很好地满足了这个需求,只需要在文件的根目录下运行 yar licenses 即可得得到依赖包的许可证种类。

同时:Yarn 和 Auth0 的兼容

Auth0 为每一个登录的用户签发一个 JSON Web Token。这意味着系统具有一套可靠的身份识别设施,包括单点登录,用户管理,社交身份认证(Facebook, Github, Tiwtter等等),企业级身份认证(Active Directory,LDAP,SAML等等),以及数据库用户的管理,这些的实现都只需要几行代码。

通过 Lock 组件可以在 Javascript 的程序中很容易地设置认证系统。在终端用 yarn 安装 Auth0 lock 组件仅仅需要一行命令:

yarn add auth0-lock

在 yark.lock 的帮助下,lock 组件在几秒之内安装完毕并锁定了版本号。如果还未有 Auth0 账号,笔者建议现在就注册一个。然后在 Auth0 的用户管理主界面,从导航条的选择应用,再选择想要连接到 Javascript 框架的应用。接下来就可以阅读快速上手的文档,根据选择的 app 种类跟随文档的引导即可。

结语

Yarn 还在起步阶段,但是已经给 Javascript 软件包管理带来了十分显著的改善,特别是在从全局性的 registries 获取包到本地的方式上,对其速度和安全性的改善。


本文由职坐标整理发布,更多相关内容,请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程