Skip to content

7.2 Node.jsのモジュールシステム

ブラウザと並ぶTypeScript(およびJavaScript)の主要な実行環境である「Node.js」特有のモジュールシステムやパッケージ管理の仕組みについて学習します。

7.2.1 Node.jsの組み込みモジュール

Section titled “7.2.1 Node.jsの組み込みモジュール”

追加のインストールなしで、Node.jsに最初から備わっているモジュール群です。

  • インポート方法: ファイルの相対パス(./ など)ではなく、直接モジュール名(例: "fs", "path", "readline")を指定してインポートします。このようなモジュールは「外部モジュール」として扱われます。
  • 主な機能: 対話的な入出力(readline)、ファイルシステムへのアクセス(fs)、ファイルパスの変換(path)、ネットワーク通信(http)など、OSの機能を利用するためのAPIを提供します。

ES Modules(import/export)が標準化される前からNode.jsで広く採用され、現在も使われている歴史あるモジュールシステムです。

  • インポート: const path = require("path"); のように、require 関数を用いて読み込みます。import 宣言とは異なり、プログラムの途中(if 文の中など)で動的に呼び出すことが可能です。
  • エクスポート: あらかじめ用意された exports オブジェクトや module.exports にプロパティを代入することで、外部にデータを公開します。
  • 重要性: npmで配布されているパッケージの多くや、JavaScriptで書かれた設定ファイルを扱う際には、今でもCommonJSの知識が必要になります。

Node.jsに同梱されている公式のパッケージマネージャです。世界中の開発者が作成したサードパーティパッケージ(外部モジュール)をダウンロードして利用できます。

  • インストール: ターミナルで npm install パッケージ名 を実行します。
  • 保存場所: インストールされたパッケージは、プロジェクト固有の node_modules ディレクトリに保存されます(グローバル環境を汚染しません)。
  • 利用: 組み込みモジュールと同様に、import fastify from "fastify"; のようにモジュール名のみを指定してソースコードから読み込むことができます。

7.2.3 package.jsonとpackage-lock.jsonの役割

Section titled “7.2.3 package.jsonとpackage-lock.jsonの役割”

Node.jsプロジェクトの構成と依存パッケージを管理するための重要なファイル群です。

  • package.json: プロジェクトの基本設定や、依存するライブラリの一覧(dependenciesdevDependencies)を人間が管理するファイルです。npm init コマンドでひな形を作成できます。
  • package-lock.json: npm install 実行時に自動生成されるファイルです。依存ライブラリがさらに依存しているパッケージも含め、実際にインストールされた正確なバージョン情報を記録(ロック)します。これにより、他の開発者の環境でも全く同じ状態の node_modules を再現できるようになります。