package.json在Node JS应用程序中的重要性

时间:2020-02-23 14:41:08  来源:igfitidea点击:

在开始Node JS应用程序开发之前,我们应该学习package.json文件的一些基础知识和重要性。
每个Node JS应用程序,模块或者程序包都应包含此package.json文件。

前提条件:您应该具有有关JSON文件格式,JSON数据类型等的一些基本知识。

什么是package.json?

package.json是一个纯JSON(Java脚本对象表示法)文本文件,其中包含有关Node JS Project或者应用程序的所有元数据信息。

每个Node JS软件包或者模块都应在根目录下具有此文件,以纯JSON对象格式描述其元数据。

我们应该使用相同的文件名,并使用相同的大小写" package"和相同的文件扩展名" * .json"。

为什么该文件名是"包":因为Node JS平台将每个功能作为单独的组件进行管理。
该组件也称为"包装"或者"模块"。

谁使用package.json文件?

NPM(节点程序包管理器)使用此package.json文件中有关节点JS应用程序信息或者节点JS程序包详细信息的信息。

package.json文件包含许多不同的指令或者元素。
它使用这些指令告诉NPM"如何处理模块或者包"。

package.json文件的强制性指令

package.json文件包含许多不同的指令或者元素。
有些是强制性指令,有些是可选指令。

强制性指令

ackage.json文件包含两个强制指令;

  • 名称

名称:这是唯一的Node JS软件包(模块)名称或者我们的Node JS项目名称。
该名称应使用小写字母。
这是强制性指令。
没有此指令,我们将无法使用NPM安装Node JS软件包。

JSON文件遵循键值对格式。
键是JSON字符串类型,值可以是任何JSON数据类型。
键和值元素之间用冒号":"分隔。

这里的"名称"指令的值是JSON字符串类型。

例:

" name":"简单名称"

当我们运行" npm install <程序包名称>"命令时,NPM读取根目录中可用的package.json文件,并通过读取此名称指令来检查该程序包名称。
如果在package.json文件中找不到此指令,则会抛出错误消息,并且无法安装该软件包。

版本:版本是节点JS软件包的版本号。
它是package.json文件中的Mandatory指令。
NPM使用此版本号在我们的NODE JS环境中安装或者卸载或者更新正确的软件包。

" version"指令的值是JSON字符串类型。

如果NPM在package.json文件中找不到此指令,则它将引发错误消息,并且无法安装该软件包。

例:

" version":" 1.0.0""这里我们需要定义版本的3个部分:主要,次要和补丁

package.json文件的name和version指令都唯一标识Node JS Package。

Sl No.DirectiveDescription
1.nameUnique Package name
2.versionPackage version number

示例package.json文件的示例

{
 "name" : "sample",
 "version" : "1.0.0"
}

可选指令

package.json文件可能包含许多可选指令。
仅当我们的Node JS软件包确实需要时,才应使用它们。
我们将在这里讨论一些重要的可选指令。

description:它是Node JS项目或者模块的描述。
我们需要提供有关"此模块的功能"的简要说明。

依赖项:每个Node JS项目或者模块都可能依赖于其他Node JS或者第三方模块或者我们自己的自定义模块。
我们应该使用此" dependencies"指令来提供所有这些依赖。

"依赖关系":{<在键-值对中定义所有模块依赖关系>}

此处的键是模块名称,值是必需的模块版本。
例如;

"dependencies": {
    "mypackage": "1.0.0",
    "async": "0.8.0",
    "express": "4.2.x"
}

完整的package.json文件示例:

{
"name" : "sampleapp",
"version" : "1.0.0"'
"dependencies": {
	"mypackage": "1.0.0",
	"async": "0.8.0",
	"express": "4.2.x"
}
}

这里的示例应用程序依赖于其他3个Node JS模块:mypackage(我自己的自定义模块),async和express(Node JS模块)

在定义依赖版本时,我们可以使用一些模式匹配语法。

方案1:任何带有*字符的可用版本

"dependencies": {
 "mypackage": "*"
}

它将提取mypackage模块的任何可用版本。

方案2:使用~符号选择范围

"dependencies": {
 "mypackage": "~0.2.0"
}

它获取> = 0.2.0到<0.3.0(专有)之间的mypackage模块的任何可用版本。

在开发模式下,我们始终希望Node JS应用程序使用Node JS存储库中的最新可用模块。

方案3:使用^符号选择范围

"dependencies": {
 "mypackage": "^0.2.0"
}

它将获取在> = 0.2.0到<1.0.0(独占)之间的mypackage模块的任何可用版本。

仓库:此伪指令用于指定源代码所在的URL,以供其他人为您的模块贡献或者学习您的模块。
其语法如下所示。

"repository": {
 <Define  your URL here>
}

其中我们需要定义两个元素:

  • 您要提供URL的来源类型
  • 网址

我们在键值对中定义这两个元素。
这里的键是元素名称,值是源类型或者URL。

例如;

"repository": {
"type" : "git",
"url" : "https://github.com/theitroad/jd.git"
}

带有必需和可选指令的完整package.json文件示例:

{
	"name" : "sample",
	"version" : "1.0.0"'
	"repository": {
		"type" : "git",
		"url" : "https://github.com/theitroad/jd.git"
	},
	"dependencies": {
		"mypackage": "1.0.0",
		"async": "0.8.0",
		"express": "4.2.x"
	}
}