在这篇博文中,我们将通过实例来学习package.json的教程。
package.json是一个基于nodejs和javascript的项目的JSON配置文件。它包含基于Nodejs的应用程序的key 和value 。它总是包含在应用程序的根文件夹中。这将被npm命令用于构建/启动/测试你的基于javascript的应用程序。
这将有助于其他开发人员跟踪应用程序的依赖性和版本。
这个文件可以通过多种方式创建,如下所示
- Angular/ReactJS/VueJS CLI自动创建
- npm init命令
- 手动创建文件
包的JSON文件包含以下属性
- 项目元数据,如名称、版本等
- 应用程序的依赖性--依赖性、devDependencies等
- npm命令行自动脚本
- 资源库、浏览器列表和引擎支持
package.json文件可用于以下基于Nodejs的应用程序类型
- 基于前端的应用程序,使用Angular、ReactJS和Vuejs等。
- 后台应用使用MEAN或MERN堆栈
package.json文件创建实例
这个例子可以解释创建文件的不同方法
- 使用npm init的CLI提示创建package.json文件
- 使用npm init -yes命令以默认值创建package.json文件
B:\Workspace\blog\reactapp>npm init
这个工具将引导你完成package.json文件的创建。
关于这些字段
,以及它们的确切作用,请参见npm help json 。
之后使用npm install 来安装一个包,并在package.json文件中将其保存为依赖关系。
Press ^C at any time to quit.
package name: (reactapp) nodeapp
version: (1.0.0)
description: This is node based application
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to B:\Workspace\blog\reactapp\package.json:
{
"name": "nodeapp",
"version": "1.0.0",
"description": "This is node based application",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes) yes
最低限度文件的例子
这是一个在应用程序根目录下创建的文件,包含一个应用程序的最小配置
{
"name": "nodeapp",
"version": "1.0.0",
"description": "This is node based application",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
我们已经创建了一个最小的package.json文件
| 属性 | 描述 |
|---|---|
| 名称 | 应用程序的名称 |
| 版本 | 应用程序的当前版本 |
| 描述 | 关于项目的长文本描述 |
| 主 | 这包含应用程序的入口脚本代码 |
| 作者 | 开发者的名字 |
| **许可证 | - 应用程序的许可证信息。当你把你的项目作为npm包发布时,这将是非常有用的,这样其他开发者就可以在此基础上使用这个项目。 |
| 脚本 | 这包含自动化的脚本,你可以使用指定的脚本名称来运行。这实际上包含了通过命令行运行的npm命令 |
| 资源库 | 这是指应用程序的scm代码位置 |
| 引擎 | 这包含一个条目数组,其中包含该应用程序的nodejs/npm版本工作。 |
| 浏览器列表 | 这将指定你的应用程序所支持的浏览器列表。 |
"engines": {
"node": ">= 8.0.0",
"npm": ">= 3.1.0",
}
npm install - 在package.json中添加一个依赖项
一旦基本的package.json文件创建完毕。
你可以使用npm install--save package name命令安装node包。
下面的例子解释了以下内容
- 如何在nodejs应用程序中安装npm模块/包
- 如何向nodejs项目添加依赖性和
devdependencies
下面的命令将sweetalert和lodash模块安装到nodejs项目中。
npm install --save sweetalert
npm install --save-dev lodash
上述命令在package.json的dependencies 部分创建了一个条目,另一个条目在devDependencies 部分。
下面是更新后的package.json文件
"dependencies": {
"sweetalert2": "^7.26.9"
},
"devDependencies": {
"lodash": "^4.17.10"
}
npm uninstall - 删除package.json中的依赖关系
你可以使用npmuninstall 命令从应用程序中uninstall 依赖关系。
下面的例子解释了以下内容
- 如何在nodejs应用程序中卸载npm模块/包
- 如何从nodejs项目中移除依赖性和devDependencies
下面的命令在nodejs项目中卸载了sweetalert和lodash模块。
npm uninstall --save sweetalert
npm uninstall --save-dev lodash
上述命令从dependencies 和devDependencies 部分中删除了一个条目,该条目package.json 包含所有的依赖项。
"dependencies": {
},
"devDependencies": {
}
将每个软件包更新到最新版本是非常痛苦的。我们有很多方法可以做到这一点。其中一个方法是,npm-check-updates 是一个命令行工具,用于将所有依赖项更新到最新版本,并将更新package.json中的最新版本。
使用npm install全局安装npm-check-updates。一旦安装,ncu 命令将作为一个命令可用。它使用ncu -u命令将所有软件包更新到最新版本。最后使用npm install命令在一个应用程序中安装所有的软件包。
npm i -g npm-check-updates
ncu -u
npm install
依赖关系类型
在package.json中,有很多的依赖类型
- 用于生产构建的依赖项
- 用于开发构建的 devDependencies
- peerDependencies用于生产构建,减去横向依赖关系
- optionalDependencies - 可选的或有条件的依赖关系
npm包的版本
package.json 依赖项包含软件包和版本。版本可以通过以下不同的选项进行配置或更新
Versions 可以用 (^) 和 (~) 以及其他符号作为前缀,如下所示caret tilde
例如
- ^2.1.0 : 这个包可以被更新到次要的版本,如2.1.1或2.2.0
- ~2.1.0 : 这个软件包可以更新到像2.1.1这样的次要版本,但不是2.2.0。
- *意味着任何版本都可以被更新
- >2.1.0 任何大于2.1.0的版本都可以被更新
- >=2.1.0 任何大于或等于2.1.0的版本可被更新 <2.1.0 任何小于2.1.0的版本可被更新
- <=2.1.0 任何小于等于2.1.0的版本都可以被更新。
package.json中的Dependencies、DevDependencies和peerDependencies有什么区别?
依赖关系:这些是用于运行你的应用程序的实际依赖关系。这将被用于生产。
这也将会安装交叉依赖关系,交叉依赖关系是指如果包1依赖于包2,而包2依赖于包3
如果安装了包1,包2和包3也会自动安装。
这将使用npm install -save命令进行安装。这总是包含像Angular/Vue/react l,库这样的依赖。
DevDependencies:
这些依赖项是应用程序的开发依赖项。 这是在开发过程中需要的依赖,如测试框架-mocha或karma。
这将不会作为生产构建的一部分发布。这将不会安装过渡性依赖
这将使用npm install -save-dev命令来安装。这总是包含像测试框架或文档库。
同伴依赖:
这些是与生产有关的依赖,但不安装横向依赖。
这将使用npm install -save命令进行安装。
package.json中的私钥是什么?
package.json包含私钥,其值为true/false。
如果private为true,该应用程序不能作为npm包发布。这是用来避免意外地发布到仓库的。