Nodejs应用程序中Package.json文件教程指南

166 阅读6分钟

在这篇博文中,我们将通过实例来学习package.json的教程。

package.json是一个基于nodejs和javascript的项目的JSON配置文件。它包含基于Nodejs的应用程序的keyvalue 。它总是包含在应用程序的根文件夹中。这将被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  

上述命令从dependenciesdevDependencies 部分中删除了一个条目,该条目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包发布。这是用来避免意外地发布到仓库的。