据我所知,它是 npm 的节点包(库)的主要入口点。如果你的 npm 项目变成了一个节点包(库),其他人可以通过 npm 安装它,则需要它。
假设您有一个包含 build/、dist/ 或 lib/ 文件夹的库。在此文件夹中,您的库获得了以下编译文件:
-lib/
--bundle.js
然后在你的 package.json 中,你告诉 npm 如何访问库(节点包):
{
"name": "my-library-name",
"main": "lib/bundle.js",
...
}
使用 npm 将 node 包安装到您的 JS 项目后,您可以从捆绑的 bundle.js 文件中导入功能:
import { add, subtract } from 'my-library-name';
在为您的库使用 Code Splitting(例如 Webpack)时也是如此。例如,这个 webpack.config.js 利用代码将项目拆分为多个包而不是一个包。
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 中定义一个指向库的主要入口点:
{
"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 属性只指向库的主入口点文件。