Yarn は、Facebook(FacebookロンドンオフィスのSebastian McKenzie)が中心にExponent、Google、Tildeが連携してOSSでリリースしたnpmに代わる新しいJavaScriptのパッケージ管理ソフトです。2016年10月にFacebookのBlogでリリースがアナウンスされました。
Yarn には次のような特徴があります。
- npm レジストリを使用可能
- パッケージのインストールをより早くできます
- マシン間やセキュアなオフライン環境で依存関係を管理できます
インストール
インストールは簡単にできます。
Windows
Node.jsをインストールした後、インストーラー(https://yarnpkg.com/latest.msi)を使用してインストールする。
ウィルス対策ソフトで、「%LocalAppData%\Yarn」とプロジェクトフォルダーをホワイトリストに登録してください。登録しないと、パッケージをインストール時に1ファイル毎にスキャンされとても遅くなります。
Mac
brew update
brew install yarn
パスを通す。
export PATH="$PATH:`yarn global bin`" t
yarn CLIは、npmを置き換え、一致したコマンドを新しいコマンドに置換して実行します。
npm install
→ yarn
引数が無い場合、yarn コマンドは、package.jsonを読み込み、npmレジストリからパッケージをフェッチします。
npm install –save <name>
→ yarn add <name>
見えない依存関係を削除し、コマンドを分割します。
yarn.lock
マシン間で一貫性のあるインストールをするために、Yarnはpackage.jsonで定義する依存関係よりも多くの情報を必要とします。
Yarnは各依存関係のどのバージョンがインストールされたかを正確に保存する必要があります。
このために、Yarnは、プロジェクトのルートフォルダのyarn.lockファイルを使用します。
yarn.lock ファイルは自動的に生成され、Yarnによって処理されます。
Yarn CLIで、依存関係のadd/upgrade/removeをすると、自動的にyarn.lockを更新します。
とても簡単に壊れやすいので直接このファイルを更新しないでください。
利用フロー
- 新しいプロジェクトの作成
- 依存関係の追加、削除、アップグレード
- 依存関係のインストール、再インストール
- バージョンコントロール(git)などで操作
- 継続インテグレーション
新しいプロジェクトの作成
既存のリポジトリ、コードディレクトリがあるかは関係ありません。
Yarnを追加したいディレクトリ(プロジェクトのrootであるべきです)で、次のコマンドを実行します。
yarn init
次のような質問がインタラクティブに確認され、新しいyarnプロジェクトを準備します。
name (your-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
次のようなpackage.jsonが必要です。
{
"name": "my-new-project",
"version": "1.0.0",
"description": "My New Project description.",
"main": "index.js",
"repository": {
"url": "https://example.com/your-username/my-new-project",
"type": "git"
},
"author": "Your Name <you@example.com>",
"license": "MIT"
}
yarn init を実行すると、ファイルを作成するだけで何も実行しません。このファイルは自由に編集できます。
package.jsonはプロジェクトについての情報が格納されます。プロジェクト名、メンテナー、ソースコードの格納場所、プロジェクトをインストールするのに必要な依存関係が格納されます。
依存関係を追加、削除、アップグレードします。yarnは自動的に、package.jsonとyarn.lockを更新します。
依存関係の追加、削除、アップグレード
他のパッケージを使用したい場合、最初に依存関係を追加します。
yarn add [package]
これは自動的に、package.jsonに[package]依存関係を追加し、yarn.lockを更新します。
依存関係の追加
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
依存関係の更新
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
依存関係の削除
yarn remove [packae]