npmとかyarnとかnpxとかpnpmとかいろんなものが出てきたので知識のアップデートも兼ねて共有します。
【こんな方にオススメ!】
・これまでなんとなくnpmやyarnのコマンドを実行していた人
・これから使いたいけど、どれを使っていいのか迷子な人
記事を読んで理解度を上げてもらえたら大変嬉しいです。
npmとは?
-
Node Package Manager
の略で、Node.jsのモジュールを管理するツール - Nodeをインストールすると自動で付いてくる
-
package-lock.json
によってinstallされたnode_modulesが記録されている
バージョン確認
npm -v
初期化(package.jsonが生成される)
npm init
package.jsonに記載されたパッケージを一括でインストール
// package.jsonに記載されている内容を元にnode_modulesをインストールする
npm install
// package-lock.jsonの内容を元にnode_modulesをインストールする
npm ci
package.jsonを直接編集した時には実行が必要です。
見覚えのないエラーが出た場合はいったんinstallし直すことをオススメします!
yarnってなに?
- npmと互換性があり、npmの時に利用していた
package.json
がそのまま利用できる。 - npmよりも動作が早い
-
yarn.lock
によってinstallされたnode_modulesが記録されている
バージョン確認
yarn -v
初期化(package.jsonが生成される)
yarn init
package.jsonに記載されたパッケージを一括でインストール
yarn
yarnの動作が早いのはインストールしたパッケージをキャッシュしているから。
キャッシュされているnpmのリストはyarn cache list
で表示されます。
キャッシュをクリアする時は yarn cache clean
で実施できます。
npxってなに?
node package executer
でnpmがパッケージを管理するツールに対してパッケージを実行するツールがnpxです。
npmバージョン5.2.0より同梱されているコマンドです。
npxコマンドを利用することで開発環境内パッケージを実行することが可能です!
npx module_name
実行したパッケージがインストールされていなければインストールを勧められます。(v5.2.0以降)
v5.2.0以前はインストールされていないパッケージを実行した場合、終了したら自動で削除されます。
pnpmってなに?
performant npm
の略でpnpm
だそうです。
最大の特徴は、速さ・容量の節約・厳格さです。
速さは、他のツールに比べて最大2倍速とされています。
npmとyarnでは対応していてもpnpmには標準対応していない場合があるので注意が必要です…
npmはインストールしていなくても依存しているパッケージだった場合アクセスできるのに対して、pnpmはアクセスすることができずエラーになります。
npmでパッケージをインストールせずにimportして利用していた場合、依存パッケージのバージョンアップや依存関係が亡くなった場合にエラーが発生するのを防ぎます。
【まとめ】結局何がいいの?
結局pnpmがいいのでは?と感じる方も多いと思います。
早いし、容量は節約できて、パッケージのインストール関連のエラーも少なさそう。
ただ、個人的にはすぐに乗り換えなくてもいいと考えています。
npmやyarnもpnpmが採用しているnode_modulesの構造を採用しようとしている。
(yarnは既にしている)
現在パッケージ管理や速度が大きな課題になっていないのであれば、一度それぞれのツールの動向を探ってからでも遅くないと考えています。
昨年の記事になりますので少し古いですが参考にしてください。