結論 (TL;DR)
yvm を入れましょう。
curl -fsSL https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.sh | bash
モチベーション
Yarn はバージョンによって生成される yarn.lock
の形式が微妙に違います。
例えば、Yarn 1.10 からは integrity
という項目が追加されました。
"@babel/code-frame@^7.0.0-beta.35":
version "7.0.0-beta.48"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.48.tgz#ff1c11060a7c1206e0b81e95286cfc2ca3ac405f"
+ integrity sha512-zwyam2DrinaJfhmCaajZT2yRCoN3cE8dwW7uVWaHay9z2Dwn9Pidnekkz9g7kXbg2qfVqmgDKeUTVZ4+bMlfZA==
dependencies:
"@babel/highlight" "7.0.0-beta.48"
"@babel/helper-annotate-as-pure@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
+ integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
dependencies:
"@babel/types" "^7.0.0"
...
こんな感じで大量の diff が出てしまいます。そのため、複数人で開発している時にはバージョンを合わせる必要があります。
よくある方法として、 npm 経由でバージョンを指定する、というものがあります。
npm i -g yarn@1.9.2
しかし、npm経由でバージョンを指定して入れる方法は**非推奨(Deprecated)**となっており、現在はサポートされていないため他の方法を使うべきです。
Docker経由で叩くなどいくつか方法がありますが、仮想環境を立てるほどでもない、という場合の方法を紹介します。
yvmの出番
Yarn公式ではありませんが、 yvm というnvmのYarn版があるのでこれを使います。
curl -fsSL https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.sh | bash
でインストールできます。
よく使うコマンド | 説明 |
---|---|
yvm install <version> |
<version> の Yarn をインストール |
yvm exec <version> <command> |
<version> の Yarn で を実行 |
yvm use <version> |
<version> の Yarn に切り替え |
yvm list |
バージョン一覧を表示 |
yvm which |
現在のバージョンを表示 |
yvm help |
ヘルプを表示 |
.yvmrc を使う
プロジェクトルートに .yvmrc
ファイルを置いて、中にバージョンを書いておきます。
1.9.2
.yvmrc
を置いた場所とそのサブディレクトリでは、バージョンを指定せずに yvm use
や yvm install
, yvm exec
を使うと .yvmrc
に記載してあるバージョンに合わせられます。これは便利ですね。
alias yn='yvm exec'
などのエイリアスを作っておけば、 yn
コマンドを yarn
の代わりに使えば全自動でバージョン切り替えてコマンド叩けます。
まとめ
- yvm を使うと Yarn のバージョン管理ができる
-
.yvmrc
を使うとプロジェクトごとにバージョンを自動で切り替えられる
みなさんも yvm 使っていきましょう。Yarn はいいぞ。