npm init
将生成名为package.json
的文件。以下是内容:
{
"name": "webpack-tut",
"version": "1.0.0",
"description": "",
"main": "index.js",
....
}
主要字段是模块ID 这是您的计划的主要入口点。也就是说,如果你的 package命名为foo,用户安装它,然后安装 require(“foo”),那么你的主模块的exports对象就是 返回。
这应该是相对于包的根目录的模块ID 文件夹中。
对于大多数模块而言,最有意义的是拥有一个主脚本和 通常不多。
我真的不明白这一点。因为在我的项目和我下载的一些项目中,看起来这个字段没有效果。我更改了文件名,例如:"main": "temp.js"
,app仍然运行正常。
答案 0 :(得分:0)
可以找到用于解析一个模块的节点算法伪代码here。
package.json :: main - 如果要创建可由其folder解析的模块,则非常有用。这将是一个引用模块提供的整个库的文件。
在您的情况下,当其他模块需要您正在构建的模块时,将使用此项。
例如,众所周知的lodash可以拥有一个包含整个库的构建,可以像require('lodash')
一样引用它。这是有效的,因为package.json
文件具有"main: "lodash.js"
。在许多情况下,这可能不是一个好主意,因为您可能只需要此库的一部分。因此,可以使用核心构建和引用以及其他必要的文件或构建。
另一个例子,如果您在名为libraryA
且./libraryA
的文件夹中有模块package.json
:
{
"name": "libraryA",
"version": "1.0.0",
"description": "",
"main": "./lib/entireMegaHugeLibraryA.js",
....
}
名为libraryB
的文件夹中的模块./libraryB
。然后,您可以通过执行libraryA
来require('../libraryA')
。这将解析为../libraryA/lib/entireMegaHugeLibraryA.js
。
现在,如果您分析algorithm pseudocode,就会发现自己位于a. Parse X/package.json, and look for "main" field.
行。