标签:编写 org 怎么 兼容 jmh 语义 .com tor 作用
在 Node.js 中,模块是一个库或框架,也是一个 Node.js 项目。Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着创建了一个模块,这个模块的描述文件,被称为 package.json。
package.json 属性说明:
每个项目的根目录下面,一般都有一个 package.json 文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。`npm install` 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。package.json 文件可以手工编写,也可以使用 `npm init` 命令自动生成。
package-lock.json 是在 `npm install` 时候生成一份文件,用以记录当前状态下实际安装的各个 npm package 的具体来源和版本号。package-lock.json 文件的作用锁定安装时的包的版本号,并且需要上传到 git,以保证其他人在 `npm install` 时大家的依赖能保证一致。
它有什么用呢?因为 npm 是一个用于管理 package 之间依赖关系的管理器,它允许开发者在 pacakge.json 中标出自己项目对 npm 各库包的依赖。可以选择以如下方式来标明自己所需要库包的版本
"dependencies": { "@angular/core": "~7.2.0", "tslib": "^1.9.0" }
//package.json
这里面的向上标号^ 是定义了向后(新)兼容依赖,指如果 tslib 版本是超过1.9.0,并在大版本号(1)上相同,就允许下载最新版本的 tslib 库包,例如实际上可能运行 `npm install` 时候下载的具体版本是1.9.3。波浪号大多数情况这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵守严格这一原则:相同大版本号的同一个库包,其接口符合兼容要求。这时候用户就很头疼了:在完全相同的一个 nodejs 的代码库,在不同时间或者不同 npm 下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时候甚至完全不兼容。
因此 npm 最新的版本就开始提供自动生成 package-lock.json 功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个 package-lock.json 所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。
"tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }
//package-lock.json
指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
所以建议使用~来标记版本号,这样可以保证项目不会出现大的问题,也能保证包中的小 bug 可以得到修复。
package.json 文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,`npm install` 都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以 package-lock.json 文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。
那如果我们安装时的包有bug,后面需要更新怎么办?
在以前可能就是直接改 package.json 里面的版本,然后再 `npm install` 了,但是 5 版本后就不支持这样做了,因为版本已经锁定在 package-lock.json 里了,所以我们只能 `npm install xxx@x.x.x` 这样去更新我们的依赖,然后 package-lock.json 也能随之更新。
关于 package.json 和 package-lock.json 文件说明
标签:编写 org 怎么 兼容 jmh 语义 .com tor 作用
原文地址:https://www.cnblogs.com/wyhcool/p/10798564.html