我是靠谱客的博主 洁净抽屉,最近开发中收集的这篇文章主要介绍package.json 介绍1、版本符号,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、版本符号

参考:https://oliver.blog.csdn.net/article/details/125762185

{
    "name": "typescript",
    "author": "Microsoft Corp.",
    "homepage": "https://www.typescriptlang.org/",
    "version": "4.7.4",
    "license": "Apache-2.0",
    "description": "TypeScript is a language for application scale JavaScript development",
    "keywords": [
        "TypeScript",
        "Microsoft",
        "compiler",
        "language",
        "javascript"
    ],
    "bugs": {
        "url": "https://github.com/Microsoft/TypeScript/issues"
    },
    "repository": {
        "type": "git",
        "url": "https://github.com/Microsoft/TypeScript.git"
    },
    "main": "./lib/typescript.js",
    "typings": "./lib/typescript.d.ts",
    "bin": {
        "tsc": "./bin/tsc",
        "tsserver": "./bin/tsserver"
    },
    "engines": {
        "node": ">=4.2.0"
    },
    "packageManager": "npm@6.14.15",
    "devDependencies": {
        "@octokit/rest": "latest",
        "@types/chai": "latest",
        "@types/convert-source-map": "latest",
        "@types/glob": "latest",
        "@types/gulp": "^4.0.9",
        "@types/gulp-concat": "latest",
        "@types/gulp-newer": "latest",
        "@types/gulp-rename": "0.0.33",
        "@types/gulp-sourcemaps": "0.0.32",
        "@types/merge2": "latest",
        "@types/microsoft__typescript-etw": "latest",
        "@types/minimatch": "latest",
        "@types/minimist": "latest",
        "@types/mkdirp": "latest",
        "@types/mocha": "latest",
        "@types/ms": "latest",
        "@types/node": "latest",
        "@types/node-fetch": "^2.3.4",
        "@types/q": "latest",
        "@types/source-map-support": "latest",
        "@types/xml2js": "^0.4.0",
        "@typescript-eslint/eslint-plugin": "^4.28.0",
        "@typescript-eslint/experimental-utils": "^4.28.0",
        "@typescript-eslint/parser": "^4.28.0",
        "async": "latest",
        "azure-devops-node-api": "^11.0.1",
        "chai": "latest",
        "chalk": "^4.1.2",
        "convert-source-map": "latest",
        "del": "5.1.0",
        "diff": "^4.0.2",
        "eslint": "7.12.1",
        "eslint-formatter-autolinkable-stylish": "1.1.4",
        "eslint-plugin-import": "2.22.1",
        "eslint-plugin-jsdoc": "30.7.6",
        "eslint-plugin-no-null": "1.0.2",
        "fancy-log": "latest",
        "fs-extra": "^9.0.0",
        "glob": "latest",
        "gulp": "^4.0.0",
        "gulp-concat": "latest",
        "gulp-insert": "latest",
        "gulp-newer": "latest",
        "gulp-rename": "latest",
        "gulp-sourcemaps": "latest",
        "merge2": "latest",
        "minimist": "latest",
        "mkdirp": "latest",
        "mocha": "latest",
        "mocha-fivemat-progress-reporter": "latest",
        "ms": "^2.1.3",
        "node-fetch": "^2.6.1",
        "prex": "^0.4.3",
        "q": "latest",
        "source-map-support": "latest",
        "typescript": "^4.5.5",
        "vinyl": "latest",
        "vinyl-sourcemaps-apply": "latest",
        "xml2js": "^0.4.19"
    },
    "scripts": {
        "prepare": "gulp build-eslint-rules",
        "pretest": "gulp tests",
        "test": "gulp runtests-parallel --light=false",
        "test:eslint-rules": "gulp run-eslint-rules-tests",
        "build": "npm run build:compiler && npm run build:tests",
        "build:compiler": "gulp local",
        "build:tests": "gulp tests",
        "start": "node lib/tsc",
        "clean": "gulp clean",
        "gulp": "gulp",
        "lint": "gulp lint",
        "lint:ci": "gulp lint --ci",
        "lint:compiler": "gulp lint-compiler",
        "lint:scripts": "gulp lint-scripts",
        "setup-hooks": "node scripts/link-hooks.js"
    },
    "browser": {
        "fs": false,
        "os": false,
        "path": false,
        "crypto": false,
        "buffer": false,
        "@microsoft/typescript-etw": false,
        "source-map-support": false,
        "inspector": false
    },
    "volta": {
        "node": "14.15.5"
    }
}

主要关注的点在于 dependencies 和 devDependencies 这两个字段下 安装的依赖包的版本号,

		"convert-source-map": "latest",
        "del": "5.1.0",
        "diff": "^4.0.2",
        "eslint": "7.12.1",
        "eslint-formatter-autolinkable-stylish": "1.1.4",
        "eslint-plugin-import": "2.22.1",
        "eslint-plugin-jsdoc": "30.7.6",
        "eslint-plugin-no-null": "1.0.2",
        "fancy-log": "latest",
        "fs-extra": "^9.0.0",

版本号是由3段组成,大致说明如下:主版本号 . 子版本号 [. 修正版本号[ build- 编译版本号 ]]

主版本号

主版本号,也就是eslint": "7.12.1 中的 7,通常我们认为是 某个大的迭代,这种迭代一般都代表 有颠覆性,巨大功能的变化,这种迭代可以是兼容的,也可以是不兼容的

因此,当我们的项目工程 安装引用了某些第三方插件时,如果更新,通常 不建议跨版本更新,比如从 2.9.0 升级到 3.0.0,这是一个风险很高的选项,我们通常只会更新子版本,甚至只更新修复版本;

子版本号

子版本号,也就是 eslint": "7.12.1 中的 12,这个通常认为是 当前主版本下的功能性迭代,这些功能性的迭代并 不涉及到架构,底层实现 等等诸如此类会影响到插件本身的改动,并且这种改动往往是完全继承之前版本用法的,并不会有变革性的更新

实际项目开发中,如果安装了一些第三方插件,并且 插件更新了一些新功能,如果是 子版本的更新,那么开发者可以根据实际的项目情况来决定是否更新这些子版本,通常子版本的更新我们 认为是兼容的,不存在上下两个版本内容,用法不一致的情况;

修复版本号

修复版本,也就是 eslint": "7.12.1 中的 1,顾名思义,这个版本号更新一般 针对的是当前这个版本出现了BUG,BUG一旦修复那么这个修复版本号就会加1

实际项目开发中,这种更新最为常见,因为如果项目中的BUG是由于依赖包的更新出现的,这种BUG往往很难被发现与定位,因此对于依赖的管理,我们通常会定一个主版本与子版本,更新时只更新修复版本号做BUG的修复,不做功能上的扩展;

版本符号说明

插入符号^

插入符号^,这个代表 锁住大版本号,可以更新子版本号以及修复版本号,看个例子

"eslint": "^7.12.1"

如果eslint的版本是这么描述的,那么代表,安装eslint的时候,会从7.12.1起,但是不会安装8.x的版本,比如可以更新7.13.0,也可以安装7.16.0,甚至可以安装7.19.10都可以,但是一旦最新版本的大版本是8开头的了,那么这个时候进行安装则会被拦截;
因此,插入符号^,代表只更新子版本,修复版本号,不会更新大版本号;

波浪号~

波浪号~,这个代表 锁住大版本号和子版本号,可以更新修复版本号,看个例子

"eslint": "~7.12.1"

以 eslint 版本为例,以波浪号为开头,安装vue的时候,会从7.12.1起,但是不会安装7.13的版本,根据定义,它只会更新修复版本号,比如 可以更新7.12.2,更新7.12.3,甚至是7.12.100,但是不会更新到7.13;

因此,波浪号~,代表只更新修复版本号,不会更新主版本号以及子版本号,但是 有一个例外,就是子版本号是0

"eslint": "~7.0.1"

由于 0在版本规则中通常认为是无意义的,可以忽略的,那么此时,也就代表着子版本号也是可以更新的,即使版本号签名的符号是波浪号,它也会去更新子版本号,因此这种情况下,版本号的区间会是: 大于7.0.1小于8.0.0

package.json 是用来 进行包管理的,它里面记录着当前这个项目中各个依赖包或者说是插件的信息,并且这些依赖包都会有一个版本号,版本号上不同的位置数字代表不同的含义,分别是:主版本号.子版本号.修复版本号

不加符号

依赖中的符号是可以不加,比如上面那个,去掉插入符号

"eslint": "7.12.1"

这代表着 指定版本,如果此时进行安装那么,包管理工具只会去安装 7.12.1 这一个版本,简单的理解,就是 锁版本 了;
空(也就是没有符号)锁定 修复版本号

一些

latest
安装的永远是最新发布的版本

>version: 必须大于某个版本
如:>1.1.2,表示必须大于1.1.2版

>=version:可大于或等于某个版本
如:>=1.1.2,表示可以等于1.1.2,也可以大于1.1.2版本

<version:必须小于某个版本
如:<1.1.2,表示必须小于1.1.2版本

<=version:可以小于或等于某个版本
如:<=1.1.2,表示可以等于1.1.2,也可以小于1.1.2版本

version1 - version2:
大于等于version1,小于等于version2
如:1.1.2 - 1.3.1,表示包括1.1.2和1.3.1以及他们之间的任意版本

range1 || range2
满足range1或者满足range2,可以多个范围

如:<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 表示满足这3个范围的版本都可以

X

x的位置表示任意版本
如:1.2.x,表示可以1.2.0,1.2.1,…,1.2.n

*

*"" 都表示任意版本

"eslint":"*" // 表示>=0.0.0的任意版本

最后

以上就是洁净抽屉为你收集整理的package.json 介绍1、版本符号的全部内容,希望文章能够帮你解决package.json 介绍1、版本符号所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(101)

评论列表共有 0 条评论

立即
投稿
返回
顶部