皆さん、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
これにてとりあえず解決。めでたしめでたし。