Node.js
npm
YARN

yarnを入れたら大変だった話

More than 1 year has passed since last update.

皆さん、Node.js使ってますか。

Node.jsのパッケージマネージャーとしてnpmを使っている方もいると思いますが、今回はyarnの話です。


yarnって?

雑に言うとnpm互換で速いパッケージマネージャー。映画じゃないよ

キャッシュとか使ってオフラインでもinstall出来たりする、結構優れもの。

最初は、JavaのOkhttpみたいに、ラッパーと言うか、npmの上に載って裏であれこれしてくれるのかな、と思ってたんですが、どうやら違うらしい。

ンまぁそこはどうでも良いとして、yarnはBSDライセンスのフリーソフトですが、Facebook、Google、Exponent、Tildeが開発したらしいとも聞きます。

トップページにはこんな謳い文句が。


高速で、信頼性が高く、そして安全な依存関係の管理


速度とともに信頼性を謳っています。

そしてネットで記事を漁っても、それほどネガティブな記事は見当たらない。

更には、何か忘れてしまったのですが、何かのプロジェクトをnpmでやろうとするとdeprecatedって言われるらしく。。。

これは入れるしかない!と思い、ビクビクしながら入れてみたところ…

どこやねん。


yarnの入れ方

昔はnpmでも入れられたみたいですが、今はdeprecatedだしバージョンも古いかもなので、OSネイティブなパッケージマネージャーで入れましょう。Windowsはインストーラーもあり〼。

私はmacなのでbrew install yarn

一応yarn --versionで入ったかどうか確認を。

さてここからが問題。


"npm互換"?

npm互換を謳われていますが(どこで)、互換なのはpackage.jsonだけで、node_modulesの階層が違ったりします。なので置き換えるより入れ替える方が良いでしょう。

だが私が文句を言いたいのはここではない。


yarnを入れた後…

npm uninstall -g hoge

yarn global install hoge

こうすれば元あったnode_modulesに置いてくれると思ってました。

でも、無いんです。さぁどうする。Spotlightを使っても出てこない。どこだ…

しかも、入れたpackageのコマンドが反応しない!つまりPATHも通ってない。貴重な手がかりが…

と言うわけで大変なことになりました。


結論

いました。/Users/***/.config/yarn/global/node_modulesに。

.config。隠しフォルダ。そりゃSpotlightしてくれないわけだ。

中に.binってフォルダがあって、その中にシンボリックリンクが置いてあるので、ここにPATHを通してあげましょう。

export PATH=$PATH:/Users/***/.config/yarn/global/node_modules/.bin

一応echoで表示して追加されてるか確認しておきましょう。もしかしたら置き換わっちゃってるかもなので。

echo $PATH

これにてとりあえず解決。めでたしめでたし。