原文:https://medium.com/better-programming/how-to-upgrade-dependencies-in-package-json-e5546804187f
Npm (Node Package Manager) 是一种应用于 JavaScript 编程语言的包管理器,也是 Node.js 的 JavaScript 运行时环境的默认包管理器。
在一个项目中,其包依赖项列表保存在
package.json
文件中。每个已安装的包都被分配了一个版本号,一般由 三部分组成:
major.minor.patch
。
-
major
表示非兼容的重大 API 改变
-
minor
表示向后兼容的功能性改变
-
patch
表示向后兼容的 bug 修正
默认情况下,npm 会安装最新的版本,并在版本号前面附加一个
^
插入符号
,如 “^15.2.0”。有这种插入符号的依赖项意味着至少要安装 15.2.0 的版本。
当存在一个更高的 major 版本时,它就可能被使用。比方说当时有了个 15.6.2,就会在安装时升级到该版本。
若你想更稳妥些,使用
~
波浪号
的 “~15.2.0” 以表示只使用 patch 位更高的版本。当然,纯 “15.2.0” 将保证只使用该精确的版本号。语义化版本命名法的更多细节见 https://semver.org/ 。
迄今为止,一切顺利。
问题来了
斗转星移,依赖愈增。当你想升级所有包以获取新特性或是修正缺陷时,你会如何做呢?
首先你得确定最新版本是多少。这里有个 GitHub 上的例子:
{
"name": "npm_upgrading",
"version": "1.0.0",
"description": "A tutorial how to upgrade NPM packages",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"repository": {
"type": "git",
"url": "git+https://github.com/JenniferFuBook/npm_upgrading.git"
"author": "Jennifer Fu",
"license": "ISC",
"bugs": {
"url": "https://github.com/JenniferFuBook/npm_upgrading/issues"
"homepage": "https://github.com/JenniferFuBook/npm_upgrading#readme",
"dependencies": {