package.json 和 package-lock.json 文件说明

来源:http://www.chinese-glasses.com 作者:Web前端 人气:69 发布时间:2020-04-29
摘要:时间: 2019-09-13阅读: 118标签: package 时间: 2019-05-01阅读: 796标签: packagepackage.json 根据官方文档,这个package-lock.json 是在 `npminstall`10bet,时候生成一份文件,用以记录当前状态下实际安装的

时间: 2019-09-13阅读: 118标签: package

时间: 2019-05-01阅读: 796标签: packagepackage.json

根据官方文档,这个package-lock.json 是在 `npm install`10bet,时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。

在 Node.js 中,模块是一个库或框架,也是一个 Node.js 项目。Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着创建了一个模块,这个模块的描述文件,被称为 package.json。

它有什么用呢?因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。你可以选择以如下方式来标明自己所需要库包的版本

package.json 属性说明:

这里举个例子:

name - 包名;version - 包的版本号;description - 包的描述;homepage - 包的官网URL;author - 包的作者,它的值是你在 网站的有效账户名,遵循“账户名邮件”的规则,例如:zhangsan zhangsan@163.com;contributors - 包的其他贡献者;dependencies / devDependencies - 生产/开发环境依赖包列表。它们将会被安装在 node_module 目录下;repository - 包代码的 Repo 信息,包括 type 和 URL,type 可以是 git 或 svn,URL 则是包的 Repo 地址;main - main 字段指定了程序的主入口文件,这个字段的默认值是模块根目录下面的 index.js;keywords - 关键字

"dependencies": {"@types/node": "^8.0.33",},

每个项目的根目录下面,一般都有一个 package.json 文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。`npm install` 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。package.json 文件可以手工编写,也可以使用 `npm init` 命令自动生成。

这里面的 向上标号^是定义了向后(新)兼容依赖,指如果 types/node的版本是超过8.0.33,并在大版本号(8)上相同,就允许下载最新版本的 types/node库包,例如实际上可能运行npm install时候下载的具体版本是8.0.35。波浪号

package-lock.json

大多数情况这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵守严格这一原则:相同大版本号的同一个库包,其接口符合兼容要求。这时候用户就很头疼了:在完全相同的一个nodejs的代码库,在不同时间或者不同npm下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时候甚至完全不兼容。

package-lock.json 是在 `npm install` 时候生成一份文件,用以记录当前状态下实际安装的各个 npm package 的具体来源和版本号。package-lock.json 文件的作用锁定安装时的包的版本号,并且需要上传到 git,以保证其他人在 `npm install` 时大家的依赖能保证一致。

因此npm最新的版本就开始提供自动生成package-lock.json功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。

它有什么用呢?因为 npm 是一个用于管理 package 之间依赖关系的管理器,它允许开发者在 pacakge.json 中标出自己项目对 npm 各库包的依赖。可以选择以如下方式来标明自己所需要库包的版本

package.json 这个文件是 npm init 时创建的一个文件,会记录当前整个项目中的一些基础信息。而 package-lock.json 这个文件却是 node_modules 文件夹或者 package.json 文件发生变化时自动生成的。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。

"dependencies": { "@angular/core": "~7.2.0", "tslib": "^1.9.0"}//package.json

自npm 5.0版本发布以来,npm i的规则发生了三次变化。

这里面的向上标号^ 是定义了向后(新)兼容依赖,指如果 tslib 版本是超过1.9.0,并在大版本号(1)上相同,就允许下载最新版本的 tslib 库包,例如实际上可能运行 `npm install` 时候下载的具体版本是1.9.3。波浪号大多数情况这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵守严格这一原则:相同大版本号的同一个库包,其接口符合兼容要求。这时候用户就很头疼了:在完全相同的一个 nodejs 的代码库,在不同时间或者不同 npm 下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时候甚至完全不兼容。

本文由10bet发布于Web前端,转载请注明出处:package.json 和 package-lock.json 文件说明

关键词:

最火资讯