パッケージマネージャー「Yarn」の使い方

パッケージマネージャー「Yarn」について取り上げます。「npmとの違い」「インストール方法」「基本的な使い方」について解説していきます。

Yarnとは

Facebookが開発したJavaScriptのパッケージマネージャーです。

npmと比べて

  • npmと互換性があります。
  • キャッシュの有無にもよりますが、インストールがより速いです。
  • ネットワーク接続失敗時、自動リトライします。
  • yarn.lock によるバージョン固定化が行われます。
    • yarn.lock は、yarnでインストールした後に自動生成されます。

参考リンク

https://yarnpkg.com/ja/docs
https://github.com/yarnpkg/yarn

インストール

nodeパッケージなので、npm経由でインストールできます。

npm install -g yarn

インストール後、ヘルプを確認してみます。

yarn -h

パッケージ管理のはじめかた

package.jsonが存在しない場合、まず該当プロジェクトで yarn init を実行します。

$ mkdir front_test
$ cd front_test
$ yarn init
yarn init v1.9.4
question name (front_test): 
question version (1.0.0): 
question description: 
question entry point (index.js): 
question repository url: 
question author: 
question license (MIT): 
question private: 
success Saved package.json
✨  Done in 14.71s.

package.jsonが生成されました。

$ ls
package.json 
$ cat package.json 
{
  "name": "front_test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT"
}

すでにpackage.jsonが存在する場合、 yarn を実行することで、 Yarnによるパッケージ管理ができます。

$ yarn
yarn install v1.9.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✨  Done in 0.05s.

yarn.lock が生成されました。

$ ls
node_modules	package.json	yarn.lock

yarnの使い方

詳しいコマンドの使い方は、 https://yarnpkg.com/ja/docs/cli/で確認できます。
ここでは、よく使うコマンドについて取り上げます。

npm yarn 概要
npm init yarn init package.json の作成
npm install yarn package.json を読み込み、必要なパッケージをインストール
npm install --save [package] yarn add [package] パッケージをインストール
npm install --save-dev [package] yarn add [package] --dev パッケージをインストール
npm uninstall --save [package]
npm uninstall --save-dev [package]
yarn remove [package] パッケージをアンインストール
rm -rf node_modules && npm install yarn upgrade ローカルプロジェクトの全パッケージを更新
npm update [package] yarn upgrade [package] ローカルプロジェクトの指定パッケージを更新
npm run [script] yarn run [script] 下記で定義されたscriptを実行
1. package.json 内で定義されたscript
2. node_modules/.bin/ の中に定義されたscript(yarnの場合)
わくわくBank.
フリーランスのエンジニアとして活動してます。ここでは、ソフトウェア開発で必要とされる技術、用語、概念を整理しています。