package.json在Node JS应用程序中的重要性
在开始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. | Directive | Description |
---|---|---|
1. | name | Unique Package name |
2. | version | Package 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" } }