Yarnとは
Yarnは、2016年10月にFacebookによって開発・リリースされた、JavaScript用の高速で信頼性が高く、セキュリティの強化されたパッケージマネージャです。npm(Node Package Manager)の代替となるもので、特に速度、セキュリティ、一貫性などの問題を解決します。
Yarnは、package.jsonファイルを介してJavaScriptプロジェクトの依存関係を管理します。npmレジストリからパッケージをインストール、更新、管理するだけでなく、他のパッケージレジストリも使用できます。
Yarnの使い方
Yarnのインストール
Yarnを使用する前に、システムにインストールする必要があります。npmがインストールされている場合は、次のコマンドを使用してYarnをグローバルにインストールできます。
$ npm install -g yarn
このコマンドにより、Yarnがシステム全体にグローバルにインストールされ、どのディレクトリからでもアクセスできるようになります。
Yarnをインストールしたら、次のコマンドでインストールを確認し、バージョンを確認できます。
$ yarn --version
このコマンドにより、現在システムにインストールされているYarnのバージョンが表示されます。
Yarnを使った新しいプロジェクトの作成
Yarnを使用して新しいプロジェクトを作成するには、まずプロジェクトを作成するディレクトリに移動します。次に、yarn initコマンドを使用します。このコマンドにより、プロジェクトの依存関係を管理するために使用される新しいpackage.jsonファイルが作成されます。
$ yarn init
プロジェクトに関するいくつかの質問(プロジェクトの名前、バージョン、説明、エントリーポイントなど)が表示されます。これらのいずれかについて自信がない場合は、Enterキーを押してデフォルトを受け入れることができます。
依存関係の追加
プロジェクトに依存関係を追加するには、yarn addコマンドにパッケージ名を続けます。例えば、expressパッケージをインストールするには、次のように実行します。
$ yarn add express
このコマンドにより、expressがpackage.jsonファイルのdependenciesに追加され、node_modulesフォルダにexpressパッケージがインストールされます。特定のバージョンのパッケージをインストールする場合は、次のようにバージョン番号を指定できます。
$ yarn add express@4.17.1
開発にのみ必要なパッケージ(テストライブラリなど)を開発依存関係として追加するには、-Dフラグを使用します。
$ yarn add -D jest
このコマンドにより、jestがpackage.jsonファイルのdevDependenciesに追加されます。
グローバルに依存関係を追加
システム全体にパッケージをインストールするには、yarn addコマンドでglobalキーワードを使用します。
$ yarn global add [package-name]
パッケージのアップグレード
パッケージをアップグレードするには、yarn upgradeコマンドに続けてパッケージ名を使用します。
$ yarn upgrade [package-name]
パッケージの削除
プロジェクトからパッケージを削除するには、yarn removeコマンドに続けてパッケージ名を使用します。
$ yarn remove [package-name]
スクリプトの実行
package.jsonファイルでスクリプトが定義されている場合は、yarn runコマンドにスクリプト名を続けて実行できます。
$ yarn run [script-name]
Yarn.lockファイル
yarn.lockファイルは、Yarnで管理されたプロジェクトの重要なコンポーネントです。このファイルは、依存関係が追加されると自動的に生成され、異なる環境でのパッケージのインストールの一貫性を確保します。
Yarnが依存関係を追加するとき、yarn.lockを使用してパッケージの正確なバージョンとその依存関係をロックします。これにより、ロックファイルが作成された後にリリースされたマイナーやパッチのアップデートを含め、全てのインストールが同一になります。
この決定論的なアプローチにより、プロジェクトは全てのマシンで同じように動作するため、「私のマシンでは動作する」といった問題を減らすことができます。また、開発者は同じパッケージバージョンを使用していることが保証されるため、問題のデバッグが容易になります。
Yarn.lockファイルの読み方
yarn.lockファイルは、パッケージ名とバージョンを正確なインストールされたバージョンにマップするテキストファイルです。次に、表示される例を示します。
commander@2.20.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#57a4dd71ab0bf4b4bfcfc0511f1e8217c2076512"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/N9+26Xzur40a6e34UgaJC2Qi2E7+bTwZdujJIq0G6tXJ+8UU/EgkWR7uXR4mErg==
yarn.lockファイルの各パッケージには、このようなブロックがあります。この例では、commander@2.20.0が依存関係であり、インストールされた正確なバージョン(2.20.0)、ダウンロード元のURL、SHA512ハッシュが表示されます。
yarn.lockファイルは、他の開発者やデプロイメントシステムが正確に同じ依存関係を使用するようにするため、バージョン管理システム(Gitなど)にコミットする必要があります。
yarn.lockファイルを更新するには、yarn upgradeコマンドを使用します。このコマンドにより、package.jsonファイルで指定されたバージョン範囲に従って全ての依存関係のバージョンが更新され、yarn.lockファイルも更新されます。