Node.js のモジュール機構について(JavaScript の場合)
ディレクトリ構造
Node.js のパッケージマネージャーである npm を使う場合、プロジェクト ディレクトリは以下のような構成になります(gulp をインストールした場合)。
・プロジェクト ディレクトリ
├ node_modules
└ gulp
├package.json(※2)
├index.js
...
...
├package.json(※1)
├gulpfile.js
├sub.js(※3)
- プロジェクト ディレクトリ直下にある package.json(※1) は、このプロジェクトで使用している npm モジュールへの参照が書かれています(npm install コマンドの--saveで書き込まれます)。
- node_modules ディレクトリの下に、npm でインストールした各モジュールのディレクトリが作られます。
- gulp ディレクトリの下にある package.json(※2) には、gulp モジュールが依存しているモジュールの一覧をはじめ、gulp モジュールの構成情報が書かれています。
- sub.js は gulpfile.js の中で使われるファイルだと思ってください。
モジュールのインポート
1 2 |
var gulp = require("gulp"); var sub = require("./sub"); |
Node.js では require 関数でモジュールを読み込みます。
- 1 行目は gulp モジュールを読み込んでいます。
- パスを指定せずモジュール名だけを書くと、node_modules ディレクトリ下にあるモジュールを読み込みます。
- この場合 Node.js は、node_modules/gulp ディレクトリの中の package.json を見に行きます。
- package.json に main エントリーがあれば、それがこのモジュールのエントリー ポイントになりますので、そのファイルを実行します。
- gulp の場合は main エントリーが無いので、この場合、index.js が実行されます。
- 2 行目はプロジェクト ディレクトリ下にある sub.js(※3) を読み込んでいます。
- npm のモジュールではない他の JavaScript ファイルを読み込む場合、同じディレクトリにあっても、パス(./)を付ける必要があります。
- 拡張子 .js は付けても付けなくても構いませんが、一般的には付けません。