なんとなく使っていたnpmとyarnを理解するために色々調べた自分用メモを書きます。
概要
npm... yarn...とは?
Node.jsで動作するパッケージマネージャーです。
Node.jsとはサーバーサイドで動作するJavaScriptのこと。
パッケージマネージャーとは
ライブラリの依存関係を解消してくれる便利なものと認識してます。
Debian公式によると
コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムです。名前が示すように、パッケージマネージャはパッケージを取り扱います。パッケージとは、ファイル群を一つにし、インストールや削除をまとめてできるようにしたものです。
それぞれの特徴
npm
- Node.jsと一緒にインストールされる。
- 主にnpm install や npm run <スクリプト名>で動作する
yarn
- npmと互換性があり、package.jsonがそのまま使える
- 並列処理されるため、インストール時間がnpmより速い
- セキュリティが高い
- インストール時にパッケージが不正に変更されていないかなどをチェックサムを用いて検証することができ、安全なパッケージのインストールが可能であるということ。
- バージョン管理が優れていて、信頼性が高い
- プログラムのインストール後にyarn.lockが生成され、依存プログラムパッケージのバージョンが明確に書き込まれている
- 依存プログラム/パッケージを再インストールしてもバージョンの整合性が保たれるので、バージョン不一致でプロジェクトが動かなくなる危険性が無くなる。