現役エンジニアがNode.jsを解説! 〜Node.jsのパッケージ管理〜
この講座はYouTubeで動画形式でも用意しています。合わせてご覧ください。
目的
Node.jsのパッケージ管理を理解する。
パッケージ管理とは
パッケージ管理とは、ソフトウェアのインストールや削除、ソフトウェア同士やライブラリとの依存関係を管理することです。関連して、Linuxのパッケージ管理システムの解説動画があります。
こちらはOSのパッケージ管理の話になります。それとは別にプログラミング言語単位でのパッケージ管理があり、今回はNode.jsでのパッケージ管理について説明していきます。
Node.jsでのパッケージ管理ツール
npm
npmはNode.js標準のパッケージ管理ツールで、Node.jsをインストールした際に合わせてインストールされます。npmでは必要とするパッケージ(モジュール)の検索、ダウンロード、インストール、アップデートを行えたり、開発したパッケージ(モジュール)を他者に公開などができます。
Yarn
Yarnはnpmと互換性があるNode.jsのパッケージ管理ツールです。npmと比較してより細かいバージョンの管理、高速にパッケージをインストールできます。Yarnとnpmは互換性があり相互に簡単に切り替えて使うこともできます。
インストール
第1回で紹介したVOLTAを用いてYarnのインストールができます。
また、VOLTAでYarnのバージョン管理も可能です。
volta install yarn
プロジェクトの作成
今回はYarnを用いますが基本的にはnpmも同じになります。
yarn init
package.jsonが作成され、扱うモジュールの情報などが記載されプロジェクトの管理が行えます。
{
"name": "04",
"version": "1.0.0",
"description": "",
"main": "index.js",
"author": "",
"license": "ISC",
}
expressのインストール
ここではNode.jsで人気のWebなフレームワークのexpressを扱っていきます。
yarn add express
package.json内ののdependenciesの項目にexpressが追加されていればインストール完了です。
{
"name": "04",
"version": "1.0.0",
"description": "",
"main": "index.js",
"author": "",
"license": "ISC",
"dependencies": {
// 追加される
"express": "^4.17.2"
}
}
次のコードはexpressを用いたサンプルコードです。node index.js
で実行してみましょう。サーバーが立ち上がり、「Hello World」と表示されればOKです。
const express = require("express");
const app = express();
const port = 3000;
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
インストールした際にnode_modulesというディレクトリが作られ、この中にはインストールしたファイルが入っています。中を見るとexpressが依存しているモジュールも合わせてインストールされていることが分かります。インストールされたモジュールの内容を直接変更するという事はないですが、外部モジュールをインストールした際のファイルがnode_modulesに入る事を念頭に置いておいて下さい。
package.jsonの見方
バージョン指定の方法があり動画内の例だと"express":"^4.17.2"とあります。これはキャレット表記^
と呼ばれ、4.17と互換性のあるバージョンがインストールされます。他にもチルダ表記~
などがあるので使い分けが可能です。npmのドキュメントの方にpackage.jsonの説明がありますので合わせて確認してみて下さい。
https://docs.npmjs.com/cli/v8/configuring-npm/package-json
npm scriptの使い方
package.json内のscriptsの中に簡単なコマンドを記載できます。
テストを実行したい場合の実行コマンドを書いたり、オプション付きサーバーの実行コマンドを覚えなくてもnpm scripts経由で実行できるので便利です。
例えば、サーバーを起動するdev
というコマンドをnpm scriptに追加すると、次のようになります。
{
"name": "04",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "node index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.2"
}
}
npm script経由でサーバーを起動できます。
yarn dev
まとめ
今回はNode.jsのパッケージ管理について説明してきました。次回はフレームワークであるexpressの使い方を説明していきます。