少しずつ開発している新サイト(プロジェクト名:np2020)では、環境の設計以来ずっとnpmを使っていたんですけど、業務でこれまた新しく設計された環境(設計したのは前任者)で開発をしていて、そこでyarnを使っていてインストールがとても速くて使いやすいので、こっちでもそれに乗り換えましょうということで乗り換え。
npmとyarnの違いについてはこの辺がわかりやすいです。
Yarnとnpmの違い:JavaScriptパッケージマネジャーを比較する – WPJ
npm vs yarnどっち使うかの話 – Qiita
手順は以下の通り。
- npmでyarnをインストール
- yarnコマンドを実行
以上です。それだけ。
npmでyarnをインストール
$ npm install -g yarn
一瞬で終わります。
yarnコマンドを実行
$ yarn
このコマンドを実行すると、npmでインストールしたアプリケーションがyarnで使えるようになります。全アプリケーションをチェックして必要に応じて更新をするのでちょっと時間が掛かります。僕の場合大体5分半ぐらい掛かりました。
yarnコマンドを使ってみる
基本的にnpmと互換性があるようで、以下のコマンドでコンパイルできます(run不要)。$ yarn dev
本番環境用だったらもちろんこう。
$ yarn prod
問題なし。
ただ以下のエラーが出ました。
$ yarn prod
yarn run v1.16.0
$ npm run production
npm WARN lifecycle The node binary used for scripts is /tmp/yarn--1561006369026-0.8088641901063371/node but npm is using /home/vagrant/.nvm/versions/node/v12.2.0/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
yarnとnpmで設定が違ってるからオプション「–scripts-prepend-node-path」を使え、ということらしいです。もちろん毎回そんなことはしてられないので、次のように設定します。
yarn config set scripts-prepend-node-path true
これでOK。
その他のコマンドについてはここに対照表があります。
npm からの移行 | Yarn
ちなみに
「yarn」は英語で糸のことです。モジュールの糸を紡いでプロダクトにするみたいなイメージかなあと思うんですけど、なぜかyarnプロジェクトは全体的に猫だらけです。日本人的には猫の鳴き声は「にゃーん」なので、もしかしてその連想なのか?と思いましたが、英語圏では猫の鳴き声は「meow」ですよね。何の関係もないのかな……勝手に「にゃーん」に似てるなって思ってたらなんでかわかんないけど、ドラクエ3のベビーサタン思い出しました。
(出典:http://101googol.blog44.fc2.com/blog-entry-713.html)