Node.jsとnodenvとyarn
Node.jsとnodenvとyarn
今までフロント部分について曖昧な事が多かったため、こちらにまとめさせていただきます。
Node.jsとは?
Node.jsは、JavaScriptがサーバー側で動くようにするものだが、今までJavaScriptのサーバー側バージョンの言語?と思っていたが、実は違った
Node.jsは、JavaScriptがサーバー側で動くようにするためのプラットフォームである。
そもそもRubyやJavaScriptなどのプログラミング言語が使えるようになるのは、プログラミング言語を理解できるプラットフォームがあるからである
Rubyの場合は、サーバー側にRuby言語が理解できるプラットフォームがあるからサーバー側でRubyが動く
JavaScriptの場合は、ブラウザ側にJavaScript言語が理解できるプラットフォームがあるからブラウザ側でugoku
Node.jsは、通常はブラウザ側にしかJavaScriptのプラットフォームが無いが、サーバー側でもJavaScriptを理解できるようにするためのプラットフォームである。
nodenvとは?
nodenvは、Node.jsのバージョン管理ツールである
yarnとは?
JavaScriptのライブラリを管理するパッケージマネージャ
[node_modules]フォルダとは?
yarnでインストールしたライブラリがインストールされる場所(Rubyだとvendorフォルダになる)
[package.json]ファイルとは?
yarnでインストールしたいライブラリ名とバージョンを記載したファイル(RubyだとGemfileになる)
[yarn.lock]ファイルとは?
yarnでインストールしたライブラリと、それの依存関係にあるライブラリと、それぞれのバージョンを記録しておくファイル(RubyだとGemfile.lockファイルになる)
Rubyに例えると以下のようなイメージ
Ruby | Node.js | |
バージョン管理ツール | rbenv | nodenv |
パッケージマネージャ | bundler | yarn |
インストールしたいライブラリを記載するファイル | Gemfile | package.json |
インストールしたライブラリが保存される場所 | vendor | node_modules |
インストールしたライブラリとそれの依存関係にあるライブラリと、それらのバージョンを保存しておくファイル | Gemfile.lock | yarn.lock |
Gemfile.lockやyarn.lockに記載されているライブラリをインストール+Gemfile.lock(yarn.lock)とGemfile(package.json)を比較してGemfile.lock(yarn.lock)に記載が無く、Gemfile(package.json)に記載があるライブラリがある場合は、そのライブラリに依存しているライブラリも含めてインストール | bundle install | yarn install |
Gemfile.lock(yarn.lock)に記載されているバージョンを参照せずにGemfile(package.json)に記載されている内容の範囲内で最新のライブラリをインストールし直す(ライブラリのバージョンが変わり今まで動いていたアプリケーションが動かなくなる可能性があるので、基本的にはやらない方が良い) | bundle update | yarn upgrade | Gemfileやpackage.jsonに記載せずに、指定したライブラリをインストールする | gem install (ライブラリ名) | yarn add (ライブラリ名) |
以下のファイルの位置でもRubyとの対応関係がイメージがつくと思います。
higmonta@higuchimiyukiyuunoMacBook-Pro 2563_higmonta_runteq_curriculum_advanced % which yarn /Users/higmonta/.nodenv/shims/yarn higmonta@higuchimiyukiyuunoMacBook-Pro 2563_higmonta_runteq_curriculum_advanced % which bundler /Users/higmonta/.rbenv/shims/bundler