Yarn について
Yarn はワークスペースサポートと zero-install モードを強調した最新の JavaScript パッケージマネージャーです。Plug'n'Play テクノロジーで依存関係解析を最適化し、複雑な monorepo 構造をサポートします。
主な機能
- 01yarn workspaces でマルチパッケージ monorepo を管理できます
- 02Plug'n'Play を使用した zero-install モードと高速な依存関係解析を実現できます
- 03yarn add でパッケージをインストールしてバージョンを管理できます
活用シーン
- 01大規模 monorepo のマルチパッケージ管理と依存関係の共有
- 02zero-install デプロイメントまたは高速 CI/CD パイプラインが必要なプロジェクト
- 03複雑なワークスペース依存関係とバージョン管理のニーズ
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にyarn --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
高速で、信頼性と安全性に優れた依存関係管理。
Yarn は、複数のパッケージに分かれたモダンなパッケージマネージャーです。革新的なアーキテクチャにより、既存のソリューションでは実現できないことが可能になります。
- Yarn はプラグインに対応しており、リポジトリに追加するだけで簡単に導入できます
- Yarn はデフォルトで Node に対応していますが、それに限定されません。プラグインで他の言語への対応を追加できます
- Yarn はワークスペースにネイティブ対応しており、CLI もその機能を活用します
- Yarn は Bash に似たポータブルシェルを使用し、Windows、Linux、macOS でパッケージスクリプトを移植可能にします
- Yarn は何よりもまず、プログラムから使用できるNode APIです(@yarnpkg/core経由)
- Yarn はTypeScriptで記述され、完全な型チェックが行われています
スポンサー
ゴールドスポンサー
|
| すべての環境変数を一か所に。散在する API キーに悩まされたり、自作ツールを継ぎはぎしたり、アクセス制御を避けたりする必要はありません。Dopplerでチームとサーバーを同期しましょう。 |
|
| エンタープライズ対応のアプリを。わずか数行のコードで、エンタープライズ顧客への販売を始められます。WorkOSなら、数か月ではなく数分でシングルサインオン(その他の機能も)を追加できます。 |
| Datadog は、1年以上にわたり、リードメンテナーの活動時間を支援してくれています。また、長期テレメトリーを利用できるよう、アカウントもアップグレードしてくれました(RFC)。 |
|
| SysGears も、2.x の開発初期から活動時間を支援してくれました。特に、同社からの多大な投資のおかげで、Yarn 2 は以前にも増して node_modules インストールを適切にサポートできるようになりました。 |
|
| Netlify は、長年にわたり当サイトのプロバイダーを務めてきました。問題が発生するたびに、すぐに助けてくれました。同社のライブプレビューは、開発プロセスで大いに役立っています。 |
| Cloudflare も、長年にわたるパートナーです。現在は npm レジストリを直接ミラーリングしていませんが、ウェブサイトの配信を可能な限り高速化するため、引き続き同社のサービスを利用しています。 |
|
| Algolia は、長年にわたりドキュメントの改善に大きく貢献してくれました。現在も、ドキュメントの両バージョンで使用している検索エンジンを提供しています。 |
インストール
インストールガイドをご覧ください。
移行
移行ガイドをご覧ください。
ドキュメント
ドキュメントは yarnpkg.com でご覧いただけます。
API
API ドキュメントは yarnpkg.com/api でご覧いただけます。
現在の状況
従来の統合テストに加え、念のため、コミュニティで使用されているツールチェーンの最新バージョンに対して、Yarn を毎日テストしています。すべて正常に動作するはずです!
コントリビュート
コントリビュートガイドをご確認ください。
独自のバンドルをビルドする
このリポジトリをクローンし、次のコマンドを実行します。
yarn build:cli
仕組み
CLI をビルドすると、グローバルの yarn にローカルの変更がすぐに反映されます。これは、Yarn がこのリポジトリの .yarnrc.yml にある yarnPath 設定を読み込み、新しくビルドした CLI が利用可能であればそれを使うように構成されているためです。
そのまま使えます!
ほかに必要なコマンドはありません。依存関係はリポジトリ内(.yarn/cache ディレクトリ内)にチェックインされているため、yarn install を実行する必要すらありません。プロジェクトをクローンすればすぐに使え、10 年後も引き続き動作することが保証されています🙂
Yarn プラグイン
デフォルトのプラグイン
これらのプラグインは通常、Yarn に同梱されています。使用するために特別な操作は必要ありません。
- plugin-compat には、PnP のサポートを改善するために適用される組み込みのパッチがいくつか含まれています。
- plugin-constraints は、Yarn に 制約 のサポートを追加します。
- plugin-dlx は、
yarn dlxコマンドのサポートを追加します。 - plugin-essentials は、パッケージマネージャーに必要と見なされるさまざまなコマンド(add、remove など)を追加します。
- plugin-exec は、依存関係で
exec:プロトコルを使用するためのサポートを追加します。 - plugin-file は、依存関係で
file:プロトコルを使用するためのサポートを追加します。 - plugin-git は、Git リポジトリからパッケージをクローンするためのサポートを追加します。
- plugin-github は、依存関係として GitHub の参照を使用するためのサポートを追加します。このプラグインは git を使用しません。
- plugin-http は、依存関係として URL をそのまま参照するためのサポートを追加します(tgz アーカイブのみ)。
- plugin-init は、
yarn initコマンドのサポートを追加します。 - plugin-interactive-tools は、さまざまな対話型コマンド(
yarn upgrade-interactive)のサポートを追加します。 - plugin-link は、依存関係として
link:とportal:の参照を使用するためのサポートを追加します。 - plugin-nm は、
node_modulesフォルダーを通じてパッケージをインストールするためのサポートを追加します。 - plugin-npm は、npm に似たレジストリから解決される semver 範囲 の依存関係を使用するためのサポートを追加します。
- plugin-npm-cli は、npm 固有のコマンド(
yarn npm login、yarn npm publishなど)のサポートを追加します。 - plugin-pack は、
yarn packコマンドのサポートを追加します。 - plugin-patch は、
patch:プロトコルのサポートを追加します。 - plugin-pnp は、Plug'n'Play 仕様を通じて JavaScript の依存関係をインストールするためのサポートを追加します。
- plugin-stage は、
yarn stageコマンドのサポートを追加します。 - plugin-typescript は、TypeScript を使用する際のユーザーエクスペリエンスを向上させます。
- plugin-version は、新しいリリースワークフローのサポートを追加します。
- plugin-workspace-tools は、
yarn workspaces foreachコマンドのサポートを追加します。
サードパーティ製プラグイン
プラグインはサードパーティの組織や個人が開発できます。アプリケーションで使用するには、yarn plugin import の呼び出し時にプラグインの完全な URL を指定してください。現時点では、プラグインは npm レジストリから取得されないことに注意してください。単一の JavaScript ファイルとして配布する必要があります。
新しいプラグインの作成
独自のプラグインを作成するには、ドキュメントを参照してください。
汎用パッケージ
以下のパッケージは汎用的であり、さまざまな用途に利用できます(他のパッケージマネージャーの実装などにも利用できますが、それに限りません)。
- @yarnpkg/core を使うと、あらゆるアプリケーションでプロジェクトをプログラムから操作できます。
- @yarnpkg/fslib は、型安全なプリミティブを通じてファイルシステムを抽象化するツールセットです。
- @yarnpkg/libzip には、WebAssembly にコンパイルされた zlib+libzip バインディングが含まれています。
- @yarnpkg/nm には、
node_modulesツリーのビルダーとホイスターが含まれています。 - @yarnpkg/parsers は、@yarnpkg/shell で使用される言語の解析に利用できます。
- @yarnpkg/pnp は、Plug'n'Play 互換のフックの生成に利用できます。
- @yarnpkg/pnpify は、さまざまなツールに PnP サポートを透過的に追加する CLI ツールです。
- @yarnpkg/sdks は、PnP エディター SDKを生成する CLI ツールです。
- @yarnpkg/shell は、移植性のある bash 風のシェルインタープリターです。
Yarn パッケージ
以下のパッケージは Yarn 自体での使用を想定しており、他のアプリケーションではおそらく役に立ちません。
- @yarnpkg/builder には、berry とそのプラグインをパッケージ化する CLI ツールが含まれています。
- @yarnpkg/cli は、@yarnpkg/core を基盤とする CLI エントリーポイントです。