Yarn

出典: フリー教科書『ウィキブックス(Wikibooks)』

Yarnは、JavaScriptパッケージの依存関係を管理するためのモダンで高性能なパッケージマネージャーです。Facebookが開発し、npm(Node Package Manager)の代替として登場しました。Yarnはパフォーマンスの向上、セキュリティの向上、および信頼性の向上に焦点を当て、大規模なプロジェクトでのパッケージ管理を効率的に行います。

導入[編集]

Yarnとは何か、なぜ使うのか[編集]

Yarnは、Node.jsプロジェクトでのパッケージの追加、削除、および依存関係の解決を効果的に行うためのツールです。以下は、Yarnを使う主な利点です。

  1. 高速なインストール: Yarnは依存関係のインストールをパラレルで行うため、高速なパッケージの取得とインストールが可能です。
  2. セキュリティの向上: パッケージのダウンロード時にハッシュ値を確認し、変更があった場合はエラーを発生させます。これにより、信頼性とセキュリティが向上します。
  3. 依存関係の一貫性: パッケージの依存関係がyarn.lockファイルに記録され、異なる開発環境でも一貫性のある依存関係が確保されます。
  4. ワークスペースのサポート: 複数のパッケージを同時に管理することができ、モノレポ(Monorepo)プロジェクトにも適しています。

インストール手順 (Node.jsとYarn)[編集]

Yarnを使用するには、まずNode.jsとYarnをインストールする必要があります。以下は、インストール手順です。

  1. Node.jsのインストール: Yarnを使用するには、まずNode.jsをインストールする必要があります。Node.jsの最新バージョンは公式サイトからダウンロードできます。インストール後、Node.jsとnpmが利用可能になります。
  2. Yarnのインストール: 次に、npmを使用してYarnをインストールします。以下のコマンドをターミナルまたはコマンドプロンプトに入力してください。
    npm install -g yarn
    
    これにより、システム全体でYarnが利用可能になります。インストールが完了したら、yarn --versionコマンドでバージョンを確認できます。

これで、Node.jsとYarnが正しくインストールされ、プロジェクトでYarnを利用できるようになりました。次に、新しいプロジェクトを初期化する方法やパッケージを追加する手順など、Yarnの基本的な使用法について学びましょう。

npmとyarnの互換性
npm(Node Package Manager)とYarnは、どちらもJavaScriptパッケージの依存関係を管理するためのツールであり、互換性があります。以下は、npmとYarnの互換性に関する重要なポイントです。
  1. パッケージの互換性:
    • npmで管理されたプロジェクトは、Yarnで利用できるし、その逆も同様です。どちらのパッケージマネージャーでも、同じpackage.jsonファイルとnode_modulesディレクトリを共有できます。
  2. インストールの互換性:
    • package.jsonに記載された依存関係を元に、どちらのツールも同じバージョンのパッケージをインストールします。したがって、どちらを使用しても同じ状態になります。
  3. yarn.lockpackage-lock.json:
    • Yarnはyarn.lockファイルを使用して依存関係をロックし、npmはpackage-lock.jsonファイルを使用します。これらのロックファイルは、プロジェクトの依存関係を確実にするために使用されます。Yarnとnpmはそれぞれのロックファイルを生成し、それによって互換性が確保されます。
  4. スクリプトの互換性:
    • scriptsセクションに記述されたnpmスクリプトは、Yarnで実行できますし、その逆も同様です。例えば、yarn startnpm startは同じスクリプトを実行します。
  5. グローバルモードの互換性:
    • npmとYarnはどちらもプロジェクトごとに依存関係を管理することができますが、グローバルモードもサポートしています。ただし、グローバルモードではプロジェクトごとの依存関係と異なり、パッケージのバージョンの衝突が発生する可能性があります。

総じて、npmとYarnは互換性があり、同じエコシステム内で協力して使用することができます。ただし、プロジェクトごとの選択肢や開発チームの好みによって、どちらを使用するかが決定されることがあります。


プロジェクトの初期化[編集]

yarn initコマンドを使用して新しいプロジェクトを初期化[編集]

新しいNode.jsプロジェクトを始める際には、yarn initコマンドを使用してプロジェクトを初期化します。このコマンドを実行することで、プロジェクトの基本情報を入力し、package.jsonファイルが生成されます。

yarn init

コマンドを実行すると、いくつかの質問が表示されます。これらの質問に答えることで、プロジェクトの基本設定が行われます。以下は、いくつかの典型的な質問の例です。

  1. package name: パッケージの名前を入力します。デフォルトでは、カレントディレクトリの名前が提案されます。
  2. version: パッケージの初期バージョンを指定します。
  3. description: パッケージに関する簡潔な説明を入力します。
  4. entry point: アプリケーションやライブラリのメインファイルを指定します。デフォルトでは、index.jsが提案されます。
  5. test command: テストスクリプトのコマンドを指定します。
  6. git repository: プロジェクトのGitリポジトリのURLを入力します。

これらの質問に答えると、最終的に生成されたpackage.jsonファイルには、プロジェクトの基本的な情報が含まれます。

package.jsonファイルの生成と基本情報の入力[編集]

yarn initコマンドの実行が完了すると、生成されたpackage.jsonファイルは以下のような形式を持っています。

{
  "name": "your-project-name",
  "version": "1.0.0",
  "description": "Your project description",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/your-project-name.git"
  },
  "keywords": [],
  "author": "Your Name",
  "license": "MIT"
}

このファイルには、プロジェクトの名前、バージョン、説明、エントリーポイント、テストスクリプト、リポジトリ情報、キーワード、著者、ライセンスなどが含まれています。これはプロジェクトのメタデータとして機能し、依存関係の管理やスクリプトの実行などに使用されます。

このpackage.jsonファイルは、プロジェクトがどのように振る舞うかや、どのライブラリが必要かなどの情報を提供します。プロジェクトを進めるには、このファイルを適切に編集し、必要な依存関係を追加していくことになります。

パッケージの管理[編集]

パッケージの追加: yarn addコマンドの使用[編集]

新しいパッケージをプロジェクトに追加するには、yarn addコマンドを使用します。このコマンドは、指定したパッケージを依存関係に追加し、package.jsonファイルのdependenciesセクションにも追加します。

例えば、Expressをプロジェクトに追加する場合は以下のようにします。

yarn add express

このコマンドはExpressをダウンロードし、プロジェクトのnode_modulesディレクトリにインストールします。また、package.jsonファイルも更新され、Expressがdependenciesとしてリストされます。

パッケージの削除: yarn removeコマンドの使用[編集]

不要なパッケージをプロジェクトから削除するには、yarn removeコマンドを使用します。

例えば、削除したいパッケージがexpressである場合は以下のようにします。

yarn remove express

このコマンドは、指定したパッケージをnode_modulesディレクトリから削除し、package.jsonファイルのdependenciesセクションからも削除します。

依存関係のインストール: yarn installコマンドの使用[編集]

yarn addコマンドで新しいパッケージを追加したり、yarn removeコマンドでパッケージを削除したりした後、依存関係を最新の状態にするためには、yarn installコマンドを使用します。

yarn install

このコマンドは、package.jsonファイルにリストされた依存関係を元に、node_modulesディレクトリ内に必要なパッケージをインストールします。また、yarn.lockファイルも更新され、プロジェクト全体の依存関係の一貫性が保たれます。

これらのコマンドを利用することで、プロジェクトの依存関係を管理し、簡単に新しいライブラリやツールを導入できます。

パッケージのバージョン管理[編集]

パッケージのバージョン指定方法[編集]

パッケージのバージョンを指定することは、プロジェクトの安定性を確保し、予期せぬ動作の変更を防ぐ上で重要です。Yarnでは、package.jsonファイルのdependenciesセクションにある各パッケージのバージョン指定が行われます。

  • 具体的なバージョン指定: この場合、example-packageは厳密にバージョン1.2.3を使用します。
    "dependencies": {
      "example-package": "1.2.3"
    }
    
  • 範囲指定: ^を使ってメジャーバージョンが同じであれば新しいパッチやマイナーバージョンも利用されるように指定します。
    "dependencies": {
      "example-package": "^1.2.3"
    }
    
  • 範囲指定(マイナー以下を除く): ~を使ってメジャーとマイナーバージョンが同じであれば新しいパッチバージョンも利用されるように指定します。
    "dependencies": {
      "example-package": "~1.2.3"
    }
    
  • 最新のバージョン: *を使うと最新のバージョンが利用されます。
    "dependencies": {
      "example-package": "*"
    }
    

パッケージのアップデート: yarn upgradeコマンドの使用[編集]

プロジェクトに導入されているパッケージのバージョンをアップデートするには、yarn upgradeコマンドを使用します。このコマンドは指定したパッケージを最新のバージョンにアップグレードします。

yarn upgrade example-package

また、特定のバージョン範囲内でアップグレードを行いたい場合は、バージョン指定も可能です。

yarn upgrade example-package@^1.2.0

これにより、example-packageのメジャーバージョンが1であり、かつ1.2.0以上で最新のバージョンにアップグレードされます。

パッケージのアップデートを慎重に行い、プロジェクトの予期せぬ問題を回避するために、変更履歴やドキュメントを確認することが重要です。

プロジェクトのスクリプト[編集]

  • scriptsセクションの使い方
  • カスタムスクリプトの追加と実行方法
  • yarn runコマンドの使用

ワークスペースとモノレポ[編集]

  • ワークスペースの概要
  • 複数のパッケージを管理する方法
  • モノレポのセットアップ

Yarnの機能とオプション[編集]

  • ロックファイルの理解と利点
  • キャッシュのクリアと管理
  • グローバルモードとローカルモードの違い

トラブルシューティングとベストプラクティス[編集]

  • 依存関係の競合の解決
  • パフォーマンス向上のためのベストプラクティス
  • よくある問題と解決策

コミュニティとリソース[編集]

  • Yarnの公式ドキュメント
  • GitHubコミュニティとイシュートラッキング
  • 関連するフレームワークやプラグイン

脚註[編集]