私の知る限り、これはnpmのノードパッケージ(ライブラリ)への主要なエントリポイントです。npmプロジェクトが、他の人がnpmを介してインストールできるノードパッケージ(ライブラリ)になる場合にのみ必要です。
build /、dist /、またはlib /フォルダーを持つライブラリーがあるとします。このフォルダーには、ライブラリ用に次のコンパイル済みファイルが含まれています。
-lib/
--bundle.js
次に、package.jsonで、npmにライブラリ(ノードパッケージ)にアクセスする方法を伝えます。
{
"name": "my-library-name",
"main": "lib/bundle.js",
...
}
npmを含むノードパッケージをJSプロジェクトにインストールした後、バンドルされているbundle.jsファイルから機能をインポートできます。
import { add, subtract } from 'my-library-name';
これは、ライブラリにコード分割(Webpackなど)を使用する場合にも当てはまります。たとえば、このwebpack.config.jsは、プロジェクトを1つではなく複数のバンドルに分割するコードを利用します。
module.exports = {
entry: {
main: './src/index.js',
add: './src/add.js',
subtract: './src/subtract.js',
},
output: {
path: `${__dirname}/lib`,
filename: '[name].js',
library: 'my-library-name',
libraryTarget: 'umd',
},
...
}
それでも、package.jsonでライブラリへのメインエントリポイントを1つ定義します。
{
"name": "my-library-name",
"main": "lib/main.js",
...
}
その後、ライブラリを使用するときに、メインエントリポイントからファイルをインポートできます。
import { add, subtract } from 'my-library-name';
ただし、package.jsonからのメインエントリポイントをバイパスして、コード分割バンドルをインポートすることもできます。
import add from 'my-library-name/lib/add';
import subtract from 'my-library-name/lib/subtract';
結局のところ、package.jsonの mainプロパティは、ライブラリのメインエントリポイントファイルのみを指します。