npm:主属性的含义
npm init
将生成一个名为package.json
的文件。以下是内容:npm:主属性的含义
{
"name": "webpack-tut",
"version": "1.0.0",
"description": "",
"main": "index.js",
....
}
我读了这个package.json doc
主要领域是一个模块ID 这是主要的入口点到您的程序。也就是说,如果你的 包名为foo,并且用户安装它,然后 需要(“foo”),那么你的主模块的exports对象将返回 。
这应该是一个模块ID相对于您的包的根文件夹 文件夹。
对于大多数模块来说,使用主脚本和 通常没有其他更多的意义。
我不太明白这一点。因为在我的项目和我下载的一些项目中,它看起来像这个字段是没有效果的。我更改文件名,例如:"main": "temp.js"
,应用程序仍然正常运行。
用于解析一个模块的节点算法伪代码可以找到here。
package.json :: main - 如果您想创建一个可以通过它的folder解决的模块,这非常有用。这将是一个引用模块提供的整个库的文件。
在你的情况下,当其他模块需要你正在构建的模块时,将使用它。
例如,众所周知的lodash可以有一个版本保存整个库,可以参考像require('lodash')
。这是有效的,因为package.json
文件有"main: "lodash.js"
。在很多情况下,这可能不是一个好主意,因为你可能只需要这个库的一部分。相反,可以根据需要使用核心构建和引用以及其他文件或构建。
再举一个例子,如果你被点名了./libraryA
与package.json
一个文件夹中有模块libraryA
:
{
"name": "libraryA",
"version": "1.0.0",
"description": "",
"main": "./lib/entireMegaHugeLibraryA.js",
....
}
和一个名为./libraryB
文件夹中的一个模块libraryB
。然后,您可以通过执行require('../libraryA')
来要求libraryA
。这将解析为../libraryA/lib/entireMegaHugeLibraryA.js
。
现在,如果您分析algorithm pseudocode,您会发现自己位于第a. Parse X/package.json, and look for "main" field.
行。
它取决于每个特定的模块。你可以提供任何,看看,弄清楚。还取决于你如何导入模块。 –
您是否在使用'require(“./ my-webpack-tut”)'来运行您的应用程序?或者你以其他方式运行它? –