yarn と npm の違いと開発時の注意

パッケージマネージャとは何か

パッケージマネージャとは、コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムのこと。 パッケージマネージャーとは(https://www.debian.org/doc/manuals/aptitude/pr01s02.ja.html external_link)

npm とは

javascript のパッケージマネージャ。node.js をインストールしたら npm もインストールされる。

npmがyarnよりも優れている点

node.js をインストールしたら自動で npm もインストールされるので、パッケージマネージャの導入が少し楽。npm install をすると package-lock.json というファイルが生成されて、javascript のライブラリ間のバージョンの依存関係を管理してくれる。

yarn とは

javascript のパッケージマネージャ。facebook が作ったらしい。npm と互換性があるので同じpackage.json が使える.だから npm から yarn への乗り換えも可能。yarn installをすると、yarn-lock.jsonファイルが生成されて、npm の package-lock.json と同様にライブラリ間のバージョンの依存関係を管理してくれる。

yarnがnpmよりも優れている点

npm よりもインストールが早い。npm は直列で packege をインストールするのに対して、並列でインストールをするのでインストールが数倍早くなる。

開発時の注意点

 yarnでライブラリの管理をしているのに npm コマンドの npm install hoge でライブラリをインストールをしてしまうと、ライブラリの依存関係が壊れてしまうので注意!npm で管理している逆の場合も然り。  もし yarn でライブラリの管理をしているのに npm コマンドの npm install hoge でライブラリをインストールをしてしまった場合は、各パッケージマネージャの lock ファイルである package-lock.jsonyarn.locknode-module フォルダを削除して再度 yarn を用いてライブラリのインストールをすると依存関係が直ります。npm で管理をしている際も同様の手順。