23
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

#はじめに
普段、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

23
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?