LoginSignup
9
2

はじめに

皆さん馴染みの深いnpmyarnについて、違いを意識して使い分けしていますか?

両者ともNode.jsで動作するパッケージマネージャという理解はありましたが、双方の違いについて
あまり意識してませんでした。

ふと気になったので、今回はnpmyarnの概要と違いについてまとめていこうと思います

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

パッケージマネージャとはその名の通り、パッケージを管理するソフトウェアやシステムのことを指します。
主にシステムのインストールやアンインストール、必要な外部のソフトウェアの自動取得(依存関係の解決)などを行ないます。

大まかに2種類に分けられOSレベルの機能やソフトウェアパッケージを管理するものプログラミング言語向けもの`があります。

npmとは 

npmとはNode Package Managerの略称で2010年1月にリリースされたJavaScript公式の
パッケージマネージャーのことです。

yarnとは

yarnとはYet Another Resource Negotiatorの略称で、2016年10月にFacebookによってリリースされた「npm」の代替手段です。

当時のnpmはインストールは時間がかかりセキュリティに関してもパフォーマンスに関して
問題が山積みでした。

それらを解決したのが、当時のyarnになります。

セキュリティにおいての改善点ですが、インストール時にパッケージが不正に変更されていないかなどをチェックサムを用いて検証することができ、安全なパッケージのインストールを可能にしました。

また、パッケージ管理においてはyarn.lockというファイルが作成され、それにはインストールしたプログラムが使用している依存プログラム/パッケージのバージョンが明確に書き込まれます。
これにより、依存プログラム/パッケージを再インストールした際も整合性が保たれるので、デプロイ時にバージョンが違って動かなるといったことは無くなりました。

結論どっちが良いの?

現在はどちらでも良いと言うのが結論です。

昔はnpmのインストールが遅い、yarn独自の機能がある等ありましたが現在では
lockファイル等のyarnの機能もnpmに搭載されてパフォーマンスにほぼ差異はなくなっております。

ただ、個人的にはパッケージをインストールする際にyarnと打っただけでインストールできるのでyarnの方が好みです。

因みに速度については npm v7 (2020-10-13) でかなり改善されて同等のものになりました。
リリースノート等あるので、気になる方は下記を見てください!

参考記事

パッケージマネージャーとは?わかりやすい仕組みの解説~直接使っていないOSSとは~
パッケージ管理システム
node_modulesの問題点とその歴史 npm, yarnとpnpm
npmとは yarnとは
【JS】yarnの長所とyarnからnpmに戻ってきた理由

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2