资讯专栏INFORMATION COLUMN

煦涵说Yarn

pkhope / 1877人阅读

摘要:是一个新的包管理器,它由开发者共同开发完成。从包管理器中借鉴,创建了文件,用来记录项目使用每个包的确切版本。感谢您的阅读作者煦涵年月日下面是实验室的微信公众号二维码,欢迎长按扫描关注

Yarn是一个新的Javascript包管理器,它由Facebook, Google, Exponent and Tilde开发者共同开发完成。Yarn 不是 NPM 的fork版本,而是它的重新设计,Yarn 定位为"快速、可靠、安全的依赖管理工具",它的目标是解决团队开发中使用 NPM 遇到的问题。

随着 Yarn 的诞生,越来越多的开发者转向了 Yarn,那么 NPM 在开发中有哪些问题,Yarn 是如何解决的呢?
NPM 一些潜在的问题:

嵌套依赖 (npm 3.0版本已修复)

串行安装

单一个 package 来源(npmjs.com)

需要网络来安装软件包(尽管我们可以创建一个临时缓存)

允许程序包在安装时运行代码(不利于安全性)

不确定的包状态(不能确定项目的所有副本使用相同的包版本)

Yarn 解决方案:

单依赖包结构: 可以使用单一版本的依赖包,安装更快速,占用磁盘空间更少

并行安装: 并行下载依赖包,减少下载时间

多个包来源: Yarn 读取和安装 npmjs.com 和 Bower安装包,如果有个渠道down掉了,可以从另一个渠道下载包并安装

自动重试: 单个网络请求失败不会导致安装失败,请求在失败后会重试,这解决了由于临时网络问题而产生的构建异常

兼容 NPM: 从 NPM 切换到 Yarn 不需要做特殊兼容处理

yarn.lock: 用来管理 javascript 包,这个对于开发团队来说可能是最有用的功能了。 在package.json中,依赖的包版本可以被指定为一个范围,也可以不带版本号。这个可能会导致一种问题,团队内不同开发人员使用不同版本的软件包。我们都知道,复现环境的能力与完全相关的依赖关系对于高校的调试和新团队人员的融入至关重要。从包管理器(Bundler)中借鉴,Yarn 创建了 yarn.lock文件,用来记录项目使用每个包的确切版本。当将此文件提交至 SVN、GIT 等代码维护工具,可以保证项目的所有开发人员共享一套依赖包的版本号。更多文章请关注微信公众号fedlab。

Yarn 的安装
brew install yarn

/* Yarn 团队不推荐 */
npm install -g yarn 

不同平台安装方式各异,具体参见install

NPM CLI vs Yarn CLI

初始化项目

npm  init
yarn init

从 package.json 安装依赖

npm install
yarn

安装指定包到依赖或者开发依赖

npm install --save [package]
yarn add [package]

npm install --save-dev [package]
yarn add [package] [--dev/-D]

安装包到全局

npm install --global [package]
yarn global add [package]

安装指定版本的包

npm install [package]@[version]
yarn add [package]@[version]

重新下载所有包

npm reubild
yarn install --force

卸载包

npm uninstall [package]

npm uninstall --save [package]
yarn remove [package]

npm uninstall --save-dev [package]

升级包

rm -rf node_modules && npm install
yarn upgrade
总结

相比 NPM,Yarn解决了不确定依赖、网络问题、并行下载等问题。然而 NPM 是自己成功的牺牲品,随着越来越多的开发者转移使用 Yarn或者其他依赖平台,NPM 服务器可以更有效的使用。总之两个包管理器都很优秀,这种相互的关系,驱使着各自彼此往更优秀的方向前进,以惠及更多的开发者。

感谢您的阅读

--eof--

作者[煦涵]
2017年05月13日

下面是「FED实验室」的微信公众号二维码,欢迎长按、扫描关注:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88294.html

相关文章

  • 涵说Babel

    摘要:,下一代编译器,当前版本,它可以处理的所有新语法,并内置了扩展及类型注解支持,如果对不是很了解可以查看实验室微信公众号文章煦涵说。 Babel,下一代javascript编译器,当前版本 v2.4.0 ,它可以处理ES6的所有新语法,并内置了React JSX扩展及Flow类型注解支持,如果对Flow不是很了解可以查看FED实验室微信公众号文章煦涵说Flow。 Babel与JavaSc...

    lordharrd 评论0 收藏0
  • 涵说Flow

    摘要:现在已经在前端比较流行的等框架中得到使用。今天煦涵就和大家一起来学习以及在实际项目中的使用。安装这里我们选择使用,当前你也可以使用如果你对不是很了解,建议你阅读煦涵说。 Flow是Facebook出品的一个JavaScript代码的静态类型检查工具,它做了很多处理,使您的代码更快,更智能,更自信,更好的适应性。现在已经在前端比较流行的React 、Vue 等框架中得到使用。今天煦涵就和...

    王伟廷 评论0 收藏0
  • 涵说JSON

    摘要:对象表示法,是一种数据交换格式,能够在服务器端交换数据,年由提出,目的是取代繁琐笨重的格式。煦涵煦涵煦涵煦涵煦涵参考文档感谢您的阅读作者煦涵年月日下面是实验室的微信公众号二维码,欢迎长按扫描关注 JSON(Javascript Object Notaion, javascript 对象表示法), 是一种数据交换格式,能够在服务器端交换数据, 2001年由Douglas Crockfor...

    lowett 评论0 收藏0
  • 涵说Webpack-IE低版本兼容指南

    摘要:,是一个前端资源加载打包工具,现在版本已经到,今天的文章不支持介绍的及使用,而是对最近项目开发中使用打包时处理低版本及以下浏览器兼容问题做一次总结。 Webpack,Webpack 是一个前端资源加载/打包工具,现在版本已经 release 到 v2.6.1,今天的文章不支持介绍Webpack的API及使用,而是对最近项目开发中使用Webpack打包时处理IE低版本(IE8及以下)浏览...

    tanglijun 评论0 收藏0
  • Yarn 构建工具入门基础

    摘要:就是一个类似于的包管理工具,它是由推出并开源。二的安装用法和基本工作流安装以为例你可以通过包管理工具安装。在使用一个包之前,你需要执行以下命令将其加入依赖项列表会被加入到文件中的依赖列表,同时也会被更新。 一、yarn的背景和介绍一直以来,我们在安装和管理依赖的时候基本上都会使用npm,npm是一个非常优秀全面且广受欢迎的包管理工具,它奠定了前端模块化开发的基石,为前端的发展做出了不可...

    tuniutech 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<