Yarnとは
- JavascriptやNode.jsのプロジェクトで使われるパッケージマネージャーのこと
YARNの強み
1.パッケージのインストールと管理が楽
- プロジェクトで必要なライブラリや依存関係を簡単に管理できる
2.依存関係の安定性
- YARNは"yarn.lock"というファイルを使って、インストールするパッケージの正確なバージョンを記録する
- チーム全体で同じ環境を再現可能
3.高速な動作
- キャッシュ:一度インストールしたパッケージをローカルに保存しているので、再インストール時にネットワークを使わずに利用可能
- 並列処理:複数の依存関係を同時にダウンロード&インストール可能
具体的な使用場面
0.使用するきっかけ
- チームで開発を行うが、今後も人員が増えていくことが予想されるため、環境を簡単に揃えたい、という場面を想定します
1.Yarnのインストール
- Yarnを使用するには、まず各開発者がローカル環境にYarnをインストールする必要があります
- 以下にインストールの手順を紹介します
1.1 インストール
Homebrewを使ったインストール
brew install yarn
npmを使ったインストール
npm install -g yarn
1.2 バージョンの確認
- インストール後にバージョンを確認して、Yarnが正しくインストールされたことを確認します
yarn --version
プロジェクトにYarnを導入する
- チームでYarnを導入するには各開発者が同じ環境で同じ依存関係を使えるように設定することが重要です
2.1 package.jsonの作成
- Yarnを使うプロジェクトでは、まず"package.json"を作成してプロジェクトの依存関係を管理します
- package.jsonはプロジェクトの情報や依存するパッケージを記録するファイルです
- 新しいプロジェクトをYarnで初期化するには以下のコマンドを使います
yarn init
- このコマンドにより、プロジェクトの名前やバージョンなどの基本的な情報を設定して"package.json"を生成します
2.2 パッケージのインストール
- 依存パッケージをプロジェクトに追加するには以下のコマンドを使います
yarn add [パッケージ名]
- 削除するには以下のコマンドを使います
yarn remove [パッケージ名]
2.3 yarn.lockファイル
- "yarn.lock"は全ての依存関係のバージョンを固定するファイルで、チーム全体で同じバージョンのパッケージを使うために重要です
- yarn.lockファイルは必ずバージョン管理(Gitなど)に含めます。チーム内で誰が依存関係をインストールしても同じバージョンがインストールされ、一貫した動作を保証できます
3.チームでのYarnの使い方
- チーム全体でYarnを使用する場合、一貫性が非常に重要なので、以下のような方法で管理を行います
3.1 yarn.lockの利用
- チーム全体が依存関係をインストールするときに、以下のコマンドで必ずyarn.lockを利用します
yarn install
- これにより、yarn.lockに記載された正確なバージョンの依存関係がインストールされます。
3.2 開発依存関係と本番依存関係
- 開発用の依存関係は以下のコマンドで追加します
yarn add [パッケージ名] --dev
3.3 CI/CD環境での利用
- YarnはCI/CDパイプラインでもよく使われます
- GitHub ActionsやJenkinsなどのCIツールでプロジェクトのビルドやテストを自動化する際に、以下のようにyarn installコマンドを利用して依存関係をインストールします
GitHub Actionsの例(yaml)
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: yarn install
- name: Build
run: yarn build
4.バージョン管理とアップグレードの戦略
- チームでプロジェクトの依存パッケージをアップグレードする必要がある場合、以下のコマンドを使います
yarn upgrade [パッケージ名]@[バージョン]
- また、必ずPR(プルリクエスト)を作成し、レビューを通してアップグレードの影響を確認しましょう
5.ワークスペースの利用(モノリポジトリ管理)
- Yarnのワークスペース機能は、モノリポジトリ形式のプロジェクトで複数のパッケージを管理する際に非常に便利です
- 共通のモジュールやライブラリを一元管理でき、パッケージ間の依存を効率的に解決できます
設定例
{
"private": true,
"workspaces": [
"packages/*"
]
}
6.パッケージのセキュリティ管理
- 定期的に以下のコードで依存パッケージのセキュリティリスクをチェックしましょう
yarn audit