Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8926

【npm】パッケージとモジュールの違いって何?

$
0
0

はじめに

普段、Node関連の記事を書いていたり、業務で説明をする時などに、曖昧になりやすい パッケージモジュールの違いについて公式のドキュメントをもとに簡単にまとめます。

npmにあるのはパッケージなのかモジュールなのか

The npm registry contains packages, many of which are also Node modules,

公式にはnpmレジストリーにはパッケージが含まれており、その多くはNodeモジュールです。

そもそもパッケージとは何なのか

A package is a file or directory that is described by a package.json file.

パッケージとは package.jsonによって記述されるファイルもしくはディレクトリのことを指します。

そもそもモジュールとは何なのか

A module is any file or directory in the node_modules directory that can be loaded by the Node.js require() function.

モジュールとは、Node.jsの require機能によって呼び出すことができる node_modules内のファイルまたはディレクトリのことを指します。

To be loaded by the Node.js require() function, a module must be one of the following:
・ A folder with a package.json file containing a "main" field.
・ A folder with an index.js file in it.
・ A JavaScript file.

モジュールとして require機能によって読み込まれる為には、次のいずれかである必要があります。

  • package.jsonを含むフォルダーであり、mainフィールドを含むファイルであること。
  • index.jsというファイルが入っているフォルダであること。
  • JavaScriptファイルであること。

結局のところ何が違うのか

npm経由でインストールされたパッケージは、ほとんどがファイルの中でロードされて使用されます。

つまり、これらはモジュールと言えるでしょう。

モジュールに該当しないパッケージもある

npm経由でインストールされるパッケージは、ほとんどがファイルの中でロードされる為、モジュールであると書きましたが、中にはターミナルなどのコマンドラインで実行するパッケージもあると思います。

このように mainフィールドを持たないパッケージはモジュールとは言えません。

まとめ

長々と書きましたが、簡潔にかくと以下のようになります。

ファイルの中でrequireして読み込みNode.jsが使用するmainフィールドが含まれていればモジュールという認識でOK

参考文献

About packages and modules


Viewing all articles
Browse latest Browse all 8926

Trending Articles