11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

複数バージョンのYarnを共存 & 自動で切り替える (yvm)

Posted at

結論 (TL;DR)

yvm を入れましょう。

curl -fsSL https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.sh | bash

モチベーション

Yarn はバージョンによって生成される yarn.lock の形式が微妙に違います。

例えば、Yarn 1.10 からは integrity という項目が追加されました。

yarn.lock.diff
"@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 ファイルを置いて、中にバージョンを書いておきます。

sample.yvmrc
1.9.2

.yvmrc を置いた場所とそのサブディレクトリでは、バージョンを指定せずに yvm useyvm install, yvm exec を使うと .yvmrc に記載してあるバージョンに合わせられます。これは便利ですね。

sample.bashrc
alias yn='yvm exec'

などのエイリアスを作っておけば、 yn コマンドを yarn の代わりに使えば全自動でバージョン切り替えてコマンド叩けます。

まとめ

  • yvm を使うと Yarn のバージョン管理ができる
  • .yvmrc を使うとプロジェクトごとにバージョンを自動で切り替えられる

みなさんも yvm 使っていきましょう。Yarn はいいぞ。

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?