なんかこの辺りごっちゃになっているのでまとめる
Node.js
サーバーサイドで動くjavascriptらしい。
今の自分が知っているjavascriptはブラウザ上でボタンの色を変えたり、回転させたり、スクロールさせたりする言語。
ブラウザのjavascriptとサーバーサイドのjavascriptで大きく違うのはOSの機能にアクセスできるかどうかの違い。OSの機能とはファイルの管理などのハードウェアとユーザーをつなぐための基本的動作。
webサーバでもフレームワークでもなく、javascript実行環境。ここでいう実行環境というのはターミナルでnodeと打って実行できることだと理解。
babelやwebpackをクライアントサイドで動かすための開発環境の役割もあるらしい。
まとめると、OSにアクセスできるjavascriptでjavascript実行環境とクライアントの開発環境の役割があるもの。という理解です。
npm
node.jsのパッケージ管理ツール。これはrubyで言うgemにあたるらしい。パッケージとはフレームワークとかライブラリのこと。
bundle install pry-railsとnpm install twitter-api-v2がやってること同じってことか。
yarn
npmと同じでパッケージ管理ツール。
npmとyarnは互換性があるので併用したり乗り換えたりできるらしい。
nvm
node.jsのバージョン管理ツール。rubyで言うところのrbenv。なるほどバージョン沢山ある中から選んだりアップデートできる様にしてくれるやつか。
環境ごとに別のバージョンで動かしたい時に便利。
nodebrew
nvmと同じでnode.jsのバージョン管理ツール。
違いはそんなに見つけられなかった。nvmはインストール時に自動でLTSバージョンを選別してくれることくらい。
npx
npmがパッケージ管理ツールなのに対してnpxはパッケージ実行ツール。
npmを通してインストールしたパッケージはnpm run hogeで実行する必要がある。
npxはインストールせずにパッケージを実行する。
??インストールせずにパッケージ実行ってどんな時に使うの??
それはpackage.jsonファイルを汚したくないけど試してみたい時に使える。npxを使うことでパッケージがない場合はインストールし実行、その後自動で削除してくれる挙動になっている。
インストールする前に挙動だけ確認できるのは便利そう。
まとめ
それぞれ役割が別なものと、同じ役割だけど違う名前で存在しているものがわかった。
管理ツールっていうくらいだからもっと他にも沢山あるみたい。