yarn包管理工具的使用

2019-05-16  本文已影响0人  古德毛宁_39de

Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码, 或者分享自己的代码。Yarn 做这些快捷、安全、可靠,所以你不用担心什么。
通过Yarn你可以使用其他开发者针对不同问题的解决方案,使自己的开发过程更简单。 使用过程中遇到问题,你可以将其上报或者贡献解决方案。一旦问题被修复, Yarn会更新保持同步。
代码通过 包(package) (或者称为 模块(module)) 的方式来共享。 一个包里包含所有需要共享的代码,以及描述包信息的文件,称为 package.json

与npm的区别

Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。它的目的是解决这些团队使用 npm 面临的少数问题,即:

npm 和 Yarn 都使用 package.json 来跟踪项目的依赖,版本号并非一直准确,因为你可以定义版本号范围,这样你可以选择一个主版本和次要版本的包,但让 npm 安装最新的补丁也许可以修改一些 bug。
理想状态下使用语义化版本发布补丁不会包含大的变化,但不幸的是这必非真理。npm 的这种策略可能导致两台拥有相同 package.json 文件的机子安装了不同版本的包,这可能导致一些错误。
为了避免包版本的错误匹配,一个确定的安装版本被固定在一个锁文件中。每次模块被添加时,Yarn 就会创建(或更新)yarn.lock 文件,这样你就可以保证其它机子也安装相同版本的包,同时包含了 package.json 中定义的一系列允许的版本。
在 npm 中同样可以使用 npm shrinkwrap 命令来生成一个锁文件,这样在使用 npm install 时会在读取 package.json 前先读取这个文件,就像 Yarn 会先读取yarn.lock 一样。这里的区别是 Yarn 总会自动更新 yarn.lock,而 npm 需要你重新操作。

除了一些功能差异,Yarn 命令也存在一些区别。例如移除或修改了一些 npm 命令以及添加了几个有趣的命令。

yarn global

不像 npm 添加 -g--global 可以进行全局安装,Yarn 使用的是 global 前缀。不过与 npm 类似,项目依赖不推荐全局安装。

global 前缀只能用于 yarn add, yarn bin, yarn lsyarn remove,除yarn add外,这些命令都和 npm 等效。

  1. yarn global 文档

yarn install

npm install 命令会根据 package.json 安装依赖以及允许你添加新的模块;yarn install 仅会按 yarn.lockpackage.json 里面的依赖顺序来安装模块。

  1. yarn install 文档
  2. npm install 文档

yarn add [–dev]

npm install 类似,yarn add 允许你添加与安装模块,就像命令的名称一样,添加依赖意味着也会算定将依赖写入 package.json,类似 npm 的 --save 参数;Yarn 的 --dev参数则是添加开发依赖,类似 npm 的 --save-dev 参数。

  1. yarn add 文档
  2. npm install 文档

yarn licenses [ls|generate-disclaimer]

npm 没有类似命令来方便编写自己的包。yarn licenses ls 列出所有已安装包的许可协议。yarn licenses generate-disclaimer 生成包含已安装包许可协议的免责声明。某些协议要求使用者必须在项目中包含该协议,这时候该命令将变得非常好用。

  1. yarn licenses 文档

yarn why

该命令会查找依赖关系并找出为什么会将某些包安装在你的项目中。也许你明确为什么添加,也许它只是你安装包中的一个依赖,yarn why 可以帮你弄找出。

  1. yarn why 文档

yarn upgrade

该命令会根据符合 package.json 设定的规则而不是 yarn.lock 定义的确切版本来将包更新到最新版本。如果想用 npm 来实现相同目的,可以这样执行:

Shell

1 rm -rf node_modules
2 npm install

不要将该命令与 npm update 混淆,它指的是更新到自己的最新版。

  1. yarn upgrade 文档

yarn generate-lock-entry

yarn generate-lock-entry 会基于 package.json 设置的依赖生成 yarn.lock 文件,该命令与 npm shrinkwrap 类似,但应该小心使用,因为通过 yarn addyarn upgrade 命令添加或更新依赖时会自动更新生成该锁文件。

  1. yarn generate-lock-entry 文档
  2. npm shrinkwrap 文档

在这介绍两种安装方式:

安装

1. npm工具安装

 npm install yarn -g

2. 官网安装

点击打开

使用

初始化一个新项目

相当于npm的 npm init

yarn init
添加依赖包

相当于npm的 npm install [packageName] --save

yarn add [package]                          
yarn add [package]@[version]          
yarn add [package]@[tag]
将依赖项添加到不同依赖项类别中

分别添加到 devDependenciespeerDependenciesoptionalDependencies 类别中:

yarn add [package] --dev           相当于 npm install [package] --save-dev
yarn add [package] --peer
yarn add [package] --optional
dependencies:   正常的运行过程中的依赖 浏览器跑的时候
devDependencies:   开发模式 所用的依赖
peerDependencies:   当你发布项目的时候 可以指定该依赖
optionalDependencies:   可有可无,表示在安装失败的时候一个备选的依赖保证过程
bundleDependencies:   发布项目的时候所用的依赖 不是从npm来的 一起打包发布到
升级依赖包

相当于npm的 npm update

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
移除依赖包

相当于npm的 npm uninstall [package]

yarn remove [package]
安装项目的全部依赖

相当于npm的 npm i 或者 npm install

yarn

或者

yarn install
依赖和版本

在yarn中与npm中类似都有两个依赖和版本文件
依赖项的类型 package.json
依赖项的指定版本 yarn.lock

yarn.cock文件使机器之间获得一致的安装。
package.json将包含所有这些依赖项:

{
  "name": "my-project",
  "dependencies": {
    "package-a": "^1.0.0"
  },
  "devDependencies": {
    "package-b": "^1.2.1"
  },
  "peerDependencies": {
    "package-c": "^2.5.4"
  },
  "optionalDependencies": {
    "package-d": "^3.1.0"
  }
}

Yarn使用yarn.lock项目根目录中的文件。这些“锁定文件”看起来像这样:

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
package-1@^1.0.0:
  version "1.0.3"
  resolved "https://registry.npmjs.org/package-1/-/package-1-1.0.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
package-2@^2.0.0:
  version "2.0.1"
  resolved "https://registry.npmjs.org/package-2/-/package-2-2.0.1.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.0.0"
package-3@^3.0.0:
  version "3.1.9"
  resolved "https://registry.npmjs.org/package-3/-/package-3-3.1.9.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.5.0"
package-4@^4.0.0, package-4@^4.5.0:
  version "4.6.3"
  resolved "https://registry.npmjs.org/package-4/-/package-4-2.6.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"

yarn命令

常用命令

1. yarn add
yarn add   //添加要在当前包中使用的包。
2. yarn init
yarn init   //初始化包的开发。
3. yarn install
yarn install   //安装package.json文件中定义的所有依赖项。
4. yarn publish
yarn publish   //将包发布到包管理器。
5. yarn remove
yarn remove  //从当前包中删除未使用的包。

自定义命令

运行已定义的包脚本

您可以在 package.json文件中定义要运行的脚本命令

{
  "name": "my-package",
  "scripts": {
    "build": "babel src -d lib",
    "test": "jest"
  }
}

yarn run [script] [<args>]

如果已在scripts包中定义了一个对象,则此命令将运行指定的对象[script]。例如:

yarn run test

运行此命令将执行package.json中您指定的脚本命令"test"

您可以通过在脚本名称后面传递其他参数来将其传递给脚本。

yarn run test -o --watch

运行此命令将执行jest -o --watch

[script]也可以是里面的任何本地安装的可执行文件node_modules/.bin/

也可以省略run这个命令,每个脚本都可以用它的名字执行:

yarn test -o --watch

运行此命令将执行相同的操作yarn run test -o --watch。请注意,内置cli命令将优先于您的脚本,因此您不应始终在其他脚本中依赖此快捷方式

yarn run env

运行此命令将列出运行时脚本可用的环境变量。

如果要覆盖此命令,可以通过在其中定义自己的"env"脚本来执行此操作package.json

yarn run

如果未指定yarn run命令的脚本,该run命令将列出可用于运行包的所有脚本。

上一篇下一篇

猜你喜欢

热点阅读