目录
npm版本号定义
package.json怎么识别依赖版本
不要太相信npm包的版本号!
dependencies、devDependencies与peerDependencies
dependencies
devDependencies
peerDependencies
首页 web前端 js教程 聊聊如何使用package.json对依赖包进行版本管理

聊聊如何使用package.json对依赖包进行版本管理

Aug 09, 2022 pm 03:08 PM
npm package.json

本篇文章聊聊前端项目的实战中,是如何使用package.json对依赖包进行版本管理的。 不同规则,对依赖的管理会产生什么影响。

聊聊如何使用package.json对依赖包进行版本管理

npm版本号定义

版本格式:X.Y.Z[-string]
其含义为:

  • X:主版本号
  • Y:次版本号
  • Z:修正版本号
  • string: 先行版本号或版本编译信息

举个例子:

6.3.2-alpha的含义为:

  • 主版本号6,有6次不可向下兼容的更新迭代。

  • 次版本号3,有3次小的功能迭代。6.*.* <=6.3.2的依赖声明,都可以安装此新包。

  • 修正版本号2,有2次bug修改或其他非重大功能的修改。6.*.* <=6.3.2的依赖声明,都可以安装此新包。

  • 先行版本号alpha,表示处理试验阶段。

扩展阅读:语义化版本 2.0.0

package.json怎么识别依赖版本

将按下述代码进行阐释:

"vue": "~2.5.22",
"vue-class-component": "^6.0.0",
"vue-router": "3.0.1",
"express": "latest",
"mongoose": "*",
登录后复制
  • 符号^:锁定主版本,可更新次版本号、修正版本号和先行版本号

    例如"vue-class-component": "^6.0.0",安装依赖时,可以安装符合6.*.* 的任意版本,只要主版本号是6即可。

  • 符号~:锁定主版本号和次版本号,可更新修正版本号和先行版本号

    例如"vue": "~2.5.22",安装依赖时,可以安装符合2.5.*的任意版本。

  • 空符号:锁定所有版本号

    例如"vue-router": "3.0.1",只能安装版本为3.0.1的依赖包。

  • 符号*:定义某个版本号范围

    例如vue-router": "3.0.*",可以安装3.0固定的任意版本,比如3.0.13.0.2

  • latest:安装最新的稳定版本

1.png

  • 例如"express": "latest",可以安装4.18.1 (2022.06.13最新版本)。

  • *:安装最新发布的版本,不一定是稳定版本

2.png

  • 例如"mongoose": "*",可以安装6.0.0-rc23.9.7等。

  • Git URL:使用Git上发布的包

    引用格式: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]</p></li> </ul> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&quot;test&quot;: &quot;git+ssh://git@github.com:npm/cli.git#v1.0.27&quot;</pre><div class="contentsignin">登录后复制</div></div> <p>扩展阅读:<a href="https://docs.npmjs.com/cli/v7/configuring-npm/package-json#dependencies" target="_blank" textvalue="npm docs - dependencies">npm docs - dependencies</a></p> <h2 id="strong-不要太相信npm包的版本号-strong"><strong>不要太相信npm包的版本号!</strong></h2> <p>如题,这个是血的教训换来的经验。</p> <p>笔者在使用<code>system.js时,使用的版本限制是:system.js: "^6.3.2"

    在安装依赖的时候,意外安装了> 6.3.2的版本,导致项目运行出错。

    原因就是system.js作者,没有按照semver规范,进行版本号命名,导致笔者的项目,引入了不可向下兼容的更新,进而使项目运行出错。

    dependencies、devDependencies与peerDependencies

    dependencies

    生产环境中使用到的依赖,统一安装在dependencies下。

    举个例子:

    "dependencies": {
    	"chalk": "^2.4.2",
    	"commander": "^3.0.0",
    	"fs-extra": "^8.1.0",
    	"inquirer": "^6.5.0",
    	"mem-fs": "^1.1.3",
    	"mem-fs-editor": "^6.0.0",
    	"shelljs": "^0.8.3"
    }
    登录后复制

    上述代码,是笔者做的cli工具包的package.json中的片段。
    shelljs用于操作文件,如果改在devDependencies声明,则用户安装当前工具包后,运行会报错。
    因为devDependencies字段声明的依赖,在npm install 工具包时,是不会安装的。必须在dependencies字段中声明,才会被安装。

    devDependencies

    生产环境不需要使用的依赖,都需要安装在devDependencies下。
    因为生产环境下,是不会安装devDependencies字段下的依赖的。

    举个例子:

    "devDependencies": {
    	"@commitlint/cli": "^8.1.0",
    	"@commitlint/config-conventional": "^8.1.0",
    	"commitizen": "^4.0.3",
    	"commitlint-config-cz": "^0.12.1",
    	"cz-customizable": "^6.2.0",
    	"standard-version": "^7.0.0"
    }
    登录后复制

    上述代码,是笔者做的cli工具包的package.json中的片段。
    commitizen是笔者用于规范Git提交规范的依赖包,只在开发环境中使用,所以在devDependencies中声明。

    peerDependencies

    当开发一些插件和工具包时,对使用方的运行环境的依赖包版本有要求,可以使用peerDependencies字段进行声明。

    举个例子:

    {
      "name": "tea-latte",
      "version": "1.3.5",
      "peerDependencies": {
        "tea": "2.x"
      }
    }
    登录后复制

    当前工具tea-latte,依赖tea包。而且,要求tea包是主版本2。

    当不满足要求时,控制台会进行报错处理。

    注意
    npm v7版本, peerDependencies会默认安装。
    npm  v3 到 npm v6版本, peerDependencies不会自动安装。

    更多node相关知识,请访问:nodejs 教程

    以上是聊聊如何使用package.json对依赖包进行版本管理的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

JavaScript包管理器比较:Npm vs Yarn vs Pnpm JavaScript包管理器比较:Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

本篇文章带大家了解一下三种JavaScript包管理器(npm、yarn、pnpm),并将这三种包管理器进行对比,聊聊npm、yarn、pnpm三者的区别和关联,希望对大家有所帮助,如有问题欢迎指出!

npm react 安装报错怎么办 npm react 安装报错怎么办 Dec 27, 2022 am 11:25 AM

npm react安装报错的解决办法:1、打开项目中的“package.json”文件,找到dependencies对象;2、将其中的“react.json”移动到“devDependencies”;3、在终端中运行“npm audit --production”即可修复警告。

技巧分享:优雅的获取 package.json 文件 技巧分享:优雅的获取 package.json 文件 Oct 09, 2022 pm 07:07 PM

日常开发中我们都知道package.json是对项目或者模块包的描述,里面包含许多元信息,那么应该如何读取package.json获取里面的信息呢?发挥作用的就是咱们今天的主角——read-pkg,关键源码只有30行左右,接下来就一起细看一下实现,也算是为后续开发自己的工具包奠定基础!

一文解析package.json和package-lock.json 一文解析package.json和package-lock.json Sep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

node无法用npm命令怎么办 node无法用npm命令怎么办 Feb 08, 2023 am 10:09 AM

node无法用npm命令是因为没有正确配置环境变量,其解决办法是:1、打开“系统属性”;2、找到“环境变量”->“系统变量”,然后编辑环境变量;3、找到nodejs所在的文件夹;4、点击“确定”即可。

npm node gyp失败怎么办 npm node gyp失败怎么办 Dec 29, 2022 pm 02:42 PM

npm node gyp失败是因为“node-gyp.js”跟“Node.js”版本不匹配,其解决办法:1、通过“npm cache clean -f”清除node缓存;2、通过“npm install -g n”安装n模块;3、通过“n v12.21.0”命令安装“node v12.21.0”版本即可。

聊聊npm配置国内镜像(淘宝镜像) 聊聊npm配置国内镜像(淘宝镜像) Aug 09, 2022 pm 12:06 PM

npm是node.js库的包管理工具,因为镜像地址在国外,安装库会比较慢,可以将镜像地址修改为国内地址(淘宝镜像),来提供安装库的速度。

一文带你了解npm的原理 一文带你了解npm的原理 Aug 09, 2022 am 09:23 AM

npm 是 JavaScript世界的包管理工具,并且是 Node.js​平台的默认包管理工具。通过 npm可以安装、共享、分发代码,管理项目依赖关系。本篇文章带大家了解一下npm的原理,希望对大家有所帮助!

See all articles