据我所知,它是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利用代码将项目分成多个包,而不是一个包。
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属性仅指向库的主入口点文件。