Node.jsのnvmやnpmって何ですか?

IT雑記
この記事は約6分で読めます。
記事内に広告が含まれています。

本記事では次の内容に絞っています。

  • Node.jsの超初心者がnvmやnpmに触れてみました。
  • 実際に動かすことでイメージを沸かせることが出来るはずです。

今まで全然触れてこなかったからね。

Node.jsって?

javascriptを実行するためのプラットフォーム。

ぐぐったら、npmがNode.jsのパッケージ管理ソフトってのは、なんとなくわかりました。
→ だから便利なパッケージ(ライブラリとも呼ぶのかな)をパッケージ間の依存関係とか気にせずに導入するためには必須になる。

色々なパッケージ管理ソフト

  • npm:node.jsのパッケージ管理ソフト
  • pip:pythonのパッケージ管理ソフト
  • gem:rubyのパッケージ管理ソフト

→ 何れかに触れたことがあればイメージできるような・・・。
OS系の管理ソフトでいえば、Linuxならyumやapt、Windowsならwingetといったところ。

実際に使ってみるところまで試して身をもって体験してみます・・・。

全体の流れ

次の流れで進めていきます。

  • node.jsを導入(インストール)
  • node.jsでプロジェクト作成して動作確認
  • パッケージを導入して動作確認

環境準備

とりあえず試すために適当なEC2(ここではamazon linux2)にnode.jsを導入しよう。

チュートリアル: Amazon EC2 インスタンスでの Node.js のセットアップ - AWS SDK for JavaScript
SDK for JavaScript で Node.js を使用するには、通常、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上で Node.js ウェブアプリケーションをセットアップして実...
# nvmを導入
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

# nvmを使ってnode.jsの最新安定版(LTS)を導入
nvm install --lts

# 動作確認
node -e "console.log('Running Node.js ' + process.version)"
→ node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
→ この環境では何かしないと最新lts(このときはv20.12.2)が使えないようだ。

この環境では何かしないと最新LTS(このときはv20.12.2)が使えないようです。

出鼻をくじくとはこのこと。

頑張れば、使えるようになるっぽいですが、めんどうなのでバージョンを下げて使えるようにします。

# まずは利用可能なバージョンを確認
nvm ls-remote
→ 色々なバージョンが表示されます。
→ 今回は「v16.20.2」にしておきます。

# バージョン指定でnode.jsを導入
nvm install v16.20.2

# 明示的に「v16.20.2」を使うように設定
nvm use v16.20.2

# 動作確認
node -e "console.log('Running Node.js ' + process.version)"
→ Running Node.js v16.20.2 と表示され、今度はうまくいった。
nvm(Node Version Manager)とは?

Node.jsのバージョン管理を行うためのソフト。

  • 指定したバージョンを導入して簡単に切り替えることが出来る。
  • 特定プロジェクト(フォルダ)でバージョンを固有設定することも出来る(要.nvmrc)。

プロジェクト作成とパッケージ導入

Node.jsプロジェクトを作成

nvmによってnode.jsを実行できるようになったので、自分のプロジェクトを作ってhello worldしてみます。

# 適当に作成したフォルダ(プロジェクト拠点)に移動
mkdir test1 && cd $_

# プロジェクト初期化
npm init -y
→ package.jsonが作られた。

# プロジェクト内でhello world
index.jsを作成して「console.log("helloooooo!");」を記載する。

# 実行する
node index.js
→ helloooooo!
npm(Node Package Manager)とは?

Node.jsのパッケージ管理のためのソフト。

package.jsonとは?

Node.jsプロジェクトの定義、パッケージの依存関係などを管理したファイル。

  • name:パッケージ名(プロジェクト名)
  • version:パッケージのバージョン
  • dependencies:関連パッケージの依存関係
  • author:作者

など。

※ところで、ライブラリの脆弱性判定を行うサービス(GitHubのdependabotなど)は、こうしたファイルを参照して判断している。

パッケージを導入(install)

適当なパッケージも導入してコールしてみます。

※ここでは配列操作が得意なパッケージである「lodash」を導入してみます。

# lodashと呼ばれるパッケージを導入します。
npm install lodash
→ うまくいって、package-lock.jsonが作られた。
→ さらにnode_modulesフォルダが作られ、パッケージのコードなどがインストールされた。
package-lock.jsonとは?

npm installのための管理ファイル。

※package.jsonも参照されて自動的に作られるファイルで手動で触ってはダメ。

index.jsに次の内容を記載します。

const _ = require('lodash');

// 配列の要素をシャッフルする例
const shuffledArray = _.shuffle([1, 2, 3, 4, 5]);
console.log(shuffledArray);

// 配列の要素を合計する例
const sum = _.sum([1, 2, 3, 4, 5]);
console.log(sum);

→ [3, 1, 4, 5, 2]
→ 15

無事に意図した内容が出力されました!
npm install によって導入したパッケージがうまく動作しているようです。

おしまい

簡単な操作をしながら、node.jsのnvmやnpmに少しだけ触れてみました。

  • nvm
    → node.jsのバージョンを管理するためのソフトウェアで、簡単にバージョンの切り替えが出来る。
  • npm
    → node.jsのパッケージを管理するためのソフトウェア
  • package.jsonやpackage-lock.json
    → npm initやinstallによって作られるプロジェクトやパッケージのための管理ファイル。

Node.jsで何かを開発という動きには程遠いですが、パッケージを支えるためのnpm等については、なんとなく理解出来ました。

※この知識をもって、GitHub Packagesの機能に触れる!という流れへ繋げていきます(別記事)。

最後までご覧いただき、ありがとうございました!

コメント

Top
タイトルとURLをコピーしました