据我所知,它是npm的节点包(库)的主要入口点。如果你的npm项目变成了一个节点包(库),其他人可以通过npm安装它。
假设您有一个带有build/、dist/或lib/文件夹的库。在这个文件夹中,你得到了你的库的以下编译文件:
-lib/
--bundle.js
然后在你的包裹里。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使用代码将项目拆分为多个包而不是一个。
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';
但是,您也可以绕过包的主入口点。并导入代码拆分后的bundle:
import add from 'my-library-name/lib/add';
import subtract from 'my-library-name/lib/subtract';
毕竟,包中的主要属性。Json只指向你的库的主要入口点文件。