ChatGPT解决这个技术问题 Extra ChatGPT

如何将 package.json 中的每个依赖项更新到最新版本?

我从另一个项目中复制了 package.json,现在想将所有依赖项都升级到最新版本,因为这是一个新项目,如果出现问题,我不介意修复。

最简单的方法是什么?

我知道的最好方法是运行 npm info express version,然后手动更新 package.json 中的每个依赖项。一定会有更好的办法。

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

对于 Yarn 的具体解决方案,请参阅 this Stack Overflow 线程。

很高兴看到解决这个问题的另一种方法。我真的很喜欢 Salita 的输出。我现在贡献的工具 github.com/tjunnone/npm-check-updates 的一些不错的功能是保留版本控制语义(如 1.x 或 >2.1.0)和仅按名称/正则表达式/devDeps 过滤。
这里需要一些更好的答案。显然,通过依赖解析,您不能总是拥有所有内容的最新版本。最大化最新版本的模块的最大数量就是这样,某种优化问题。但是 NPM 不知道您希望哪些模块比其他模块更最新。如果有这样的东西会很酷:npm update --latest xyz,其中 xyz 是您希望尽可能最新的模块,所有其他模块都将使用它们最新的兼容版本。
npm 将通过为每个共享依赖项下载正确的版本来正确处理共享依赖项之间的版本冲突。因此,如果 Dep A 依赖于 Dep C v1.0.0,而 Dep B 依赖于 Dep C v2.0.0,它们都将被正确安装和使用。因此,您可以自由安装任何您想要的最新软件包。
试试这个来强制升级:npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
我一直在检查这个答案。但我看到它在谷歌搜索结果中出现了下滑。希望这条评论将有助于推动它的相关性!

D
DevLoverUmar

看起来 npm-check-updates 是现在实现这一目标的唯一方法。

npm i -g npm-check-updates
ncu -u
npm install

在 npm <3.11 上:

只需将每个依赖项的版本更改为 *,然后运行 npm update --save。 (注意: broken in recent (3.11) versions of npm)。

前:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

后:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

当然,这是更新依赖的钝锤。如果——正如你所说——项目是空的并且没有什么可以破坏,那很好。

另一方面,如果您在一个更成熟的项目中工作,您可能希望在升级之前验证您的依赖项中没有重大更改。

要查看哪些模块已过时,只需运行 npm outdated。它将列出所有已安装的具有较新版本的依赖项。

Yarn 的具体解决方案,请参阅this StackOverflow answer


@thefourtheye:您通常不应该在 package.json 中离开 *,因为您最终可能会自动安装一个新的模块版本,其中包含破坏您的应用程序的重大更改。由于我们在此处使用 --save,因此 * 将替换为每个包的当前版本。
我无法让它工作。自发布此答案以来,npm 有什么变化吗?当我使用通配符然后 npm install --save 时,通配符留在我的 package.json 中。
不幸的是,对我来说,使用 update 也不起作用。我还剩下通配符。您是否知道任何有关此的文档,或者我可能会查看的任何其他资源?
有点旧,但可能对其他人有所帮助:github.com/tjunnone/npm-check-updates |使用 npm install -g npm-check-updates 进行安装,然后使用 npm-check-updates 检查您的依赖项是否有更新,然后使用 npm-check-updates -u 更新您的 package.json 版本。然后它只是 npm install,它将下载新版本。
您的问题可能来自您尝试通过键入 npm update --save 而不是 npm update --save-dev 来更新开发包。
G
Guy

npm-check-updates 是一个实用程序,可使用所有依赖项的最新版本自动调整 package.json

https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

[编辑] 如果您拥有 npm 的现代版本,那么一种稍微不那么侵入性(避免全局安装)的方法是:

$ npx npm-check-updates -u
$ npm install 

这应该可以通过 npm 命令本身提供,这确实是迄今为止更新依赖项的最佳解决方案。
应该是原生 npm 的一部分,完全同意。然而,事实并非如此,而且这个解决方案轻而易举。谢谢你。
我假设你们正在推动 [HARD] 将其纳入核心 npm?
@Batman 是的,如果您之前没有安装过。否则使用 npm 更新。 ncu 只是更新 package.json。它不会安装或更新“node_modules”。
无用的包,仅用 ncu -a 更新部分包,也不更新 package.json。
R
Raine Revere

为 npm v2+ 更新

npm 2+(节点 0.12+):


npm outdated
npm update
git commit package-lock.json

古代 npm(大约 2014 年):

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

一定要收缩你的部门,否则你可能会得到一个死项目。前几天我退出了一个项目,但它无法运行,因为我的部门都已过时/更新/一团糟。如果我收缩包装,npm 会完全安装我需要的东西。

细节

对于能走到这一步的好奇者,我推荐以下内容:

使用 npm-check-updates 或 npm outdated 建议最新版本。

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

###然后进行全新安装(没有 rm 我收到了一些依赖警告)

$ rm -rf node_modules
$ npm install 

最后,使用 npm shrinkwrap 将确切的版本保存到 npm-shrinkwrap.json

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

现在, npm install 现在将使用 npm-shrinkwrap.json 中的确切版本

如果您将 npm-shrinkwrap.json 签入 git,所有安装都将使用完全相同的版本。

这是一种从开发(所有更新,一直)过渡到生产(没有人什么都不做)的方法。

npm 已过时

npm 检查更新

npm 收缩包装

ps Yarn is sending your package list to Facebook


当然。如果您创建并npm-shrinkwrap.json 到源代码中,并在每次更新时提交,您总是可以“回到原来的位置”。我开始时忽略了收缩包装功能。
回答了这个问题。问题是如何更新 latest 版本。 npm update 仅更新到 semver 版本,而不是最新版本。
如果 npm update 实际上更新了 package.json,那就太好了。根据 github.com/npm/npm/issues/13555,这是一个 2 年后仍未修复的错误。 npmjs.com/package/npm-check-updates 是当前要走的路
l
laconbass

要将 一个 依赖项更新为其最新版本,而无需手动打开 package.json 并进行更改,您可以运行

npm install {package-name}@* {save flags?}

IE

npm install express@* --save

此流程与工作空间兼容,即

npm --workspace some/package install express@*

供参考,npm-install

注意:某些 npm 版本可能需要 latest 标志,即 npm install express@latest

正如用户 Vespakoen 在被拒绝的编辑中指出的那样,也可以通过这种方式一次更新多个包:

npm install --save package-nave@* other-package@* whatever-thing@*

他还为基于 npm outdated 的 shell 提供了一个单行代码。有关代码和说明,请参见 the edit

PS:我也讨厌必须手动编辑 package.json 之类的东西;)


这个解决方案很棒。无需安装任何新模块即可将单个软件包显式更新到最新版本的快速简便方法。我喜欢 npm-check-updates,但是 afaik 它试图让所有包保持最新,这并不总是你想要的。
使用 npm outdated -l 显示每个包是依赖项还是 devDependency。使用 npm install --save-dev 保存为 devDependency。
@Chev:ncu 可以使用 ncu express mocha chai 轻松定位单个或多个包。您还可以使用 ncu -x mocha 排除软件包。我同意以上是更新单个包的最简单的解决方案。
我只是使用了类似的东西,可能来自最近的文档......使用“最新”而不是“*”npm install {package-name}@latest {save flags}
非常感谢,这个解决方案很棒,正是我正在寻找的。它允许您更新特定的包,而无需更新可能导致无法预料的问题的所有其他依赖项!
K
Keith Banner

如果您碰巧使用 Visual Studio Code 作为您的 IDE,这是一个有趣的小扩展,可以让更新 package.json 成为一个单击过程。

版本镜头

https://i.stack.imgur.com/NxI5v.gif

GitLab Repo


这里有 sublime text 3 版本:github.com/yavorsky/Bump,虽然有点慢。
工作得很好,如果有人不清楚,这只是检查你的 package.json 中的版本与最新的 npm 存储库版本,并允许你单击一个版本来更新你的 package.json 中的文本内容。然后,您需要运行“npm update”来告诉 npm 安装新版本。
请注意,通过将鼠标悬停在包条目上,已经可以在内置 Visual Studio Code 中查看最新版本的包依赖项及其简要说明:Built-in Package Version Hint
请注意,单击代码镜头链接时,它不会自动安装软件包!它只是更新 package.json 版本文本。
T
Tobias Cudnik

这适用于 npm 1.3.15。

"dependencies": {
  "foo": "latest"
}

很高兴知道。我的猜测是,这在任何生产站点上通常都是不好的做法,因为它会自动更新到可能向后不兼容的版本。 '~2' 语法将您锁定在给定的主要版本号中,semver 之后将向后兼容。
你总是可以冻结对产品的依赖。有一个命令。 -2 听起来不错。
我喜欢将它与 npm shrinkwrap 一起使用来冻结 deps。
如果我们这样做,那么我们如何知道该包的实际版本?假设我有一个名为 "react": "16.9.0" 的条目,然后我添加了 latest 并运行 npm i,之后我如何找到我的项目中现在的 react 版本?因为 "react":"latest" 是我的 package.json 中剩下的内容,即使在我执行 npm i 之后也不是数字
A
Alex

使用 * 作为最新版本的版本,包括不稳定 使用 latest 作为最新稳定版本的版本定义 使用 LatestStablePackages 使用最新的稳定版本号修改 package.json

这是一个例子:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

这是最好的答案。
仍然是最安全的方法。好答案。
每次包版本号更改时,“最新”还停止 package.json 对您的 git 提交历史记录的颠簸。唯一的缺点是在生产版本中我们需要冻结包版本号,这样构建不会中断。虽然我们可以用实际的 semvar 值替换“最新”,但通过在 package.json 中使用类似 npm run build 的命令的运行脚本来处理它。
不确定 npm shrinkwrap 是否是冻结生产版本的版本号的方法。但是要将“最新”转换为精确的 semvar 数字,可以在 package.json 中使用 "scripts": { "build" : "npx --yes npm-check-updates --upgrade" } 之类的东西。
L
Leniel Maccaferri

要查看哪些软件包有较新的版本可用,请使用以下命令:

npm outdated

要仅更新一个依赖项,只需使用以下命令:

npm install yourPackage@latest

例如:

我的 package.json 文件具有依赖性:

"@progress/kendo-angular-dateinputs": "^1.3.1",

那么我应该写:

npm install @progress/kendo-angular-dateinputs@latest

--save-dev 是什么意思?

npm install @progress/kendo-angular-dateinputs@latest --save-dev

As npm install docs says:

-D, --save-dev:包会出现在你的devDependencies中。


很好,但看起来--save(或--save-dev)对于更新不是强制性的。
@Burrich 是的,你是对的!请看我更新的答案!谢谢!
这如何回答“更新每个依赖项”的问题?这不是依赖项的手动解决方案,而不是更新所有依赖项的解决方案吗?以及最新的主要版本?
i
isherwood

我真的很喜欢 npm-upgrade 的工作方式。它是一个简单的命令行实用程序,它遍历所有依赖项,让您查看当前版本与最新版本的比较,并根据需要进行更新。

以下是在项目的根目录(在 package.json 文件旁边)运行 npm-upgrade 后发生的屏幕截图:

https://i.stack.imgur.com/qiwIs.png

对于每个依赖项,您可以选择升级、忽略、查看更改日志或完成该过程。到目前为止,它对我来说效果很好。

需要明确的是,这是一个第三方包,需要在命令生效之前安装。它不附带 npm 本身:

npm install -g npm-upgrade

然后从具有 package.json 文件的项目的根目录:

npm-upgrade

嗯,npm-upgrade 对我不起作用,但 npm upgrade 对我有用,它更新了我的 package.json 文件,这正是我正在寻找的。
嗯,有趣,有错误吗?使用 npm-upgrade 背后的想法是,您可以准确了解正在升级的内容,并挑选要升级的内容。 npm upgrade 可能适用于大多数人,但有时您需要在升级时进行更多控制。
@Grandizer:upgradeupdatealias,因此它们之间应该没有区别。但是,npm 6.2.0 有问题,可能not udpate package.json
您也可以将它与 npx 一起使用:npx npm-upgrade - 非常酷! :)
T
Tyler Davis

我发现上面最好的答案的唯一警告是它将模块更新到最新版本。这意味着它可以更新为不稳定的 alpha 版本。

我会使用那个 npm-check-updates 实用程序。我的小组使用了这个工具,它通过安装稳定的更新有效地工作。

正如 Etienne 上面所说:安装和运行这个:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

npm install 之前的 rm -rf node_modules 为我消除了一些依赖警告。
万一您在 package.json 中有“*”,只需在运行 npm-check-updates 之前将其更改为“0”或“0.0”或“0.0.0”。
您应该直接链接到“上面的最佳答案”是/曾经是什么。虽然您的答案是独立的,但这种解释并不清楚。
S
SavoryBytes

这是一个匹配语义版本号的基本正则表达式,因此您可以用星号快速替换它们。

语义版本正则表达式

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

如何使用

在 JSON 文件中选择要替换的包版本。

https://i.stack.imgur.com/YgEOd.png

输入上面的正则表达式并验证它是否匹配正确的文本。

https://i.stack.imgur.com/N00l2.png

用星号替换所有匹配项。

https://i.stack.imgur.com/gfy2d.png

运行 npm update --save


当包名称中有数字时不会。即:babel-preset-es2015、babel-preset-stage-0、hex2rgba。也许在开头搜索引号/双引号:('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
在任何支持多个插入符号(ej Sublime Text)的编辑器上,您可以选择第一个 : 并多次按 ctrl+d 直到全部选中,然后转到版本号(按右箭头 2 次)并按 ctrl 空格,然后写 "*"
T
TWright

如果您想通过漂亮的(终端)交互式报告界面使用温和的方法,我建议使用 npm-check

它不像一把锤子,让您对依赖更新有更多的相关知识和控制权。

为了让您了解等待这里的内容,这里有一个屏幕截图(从 npm-check 的 git 页面中抓取):

https://i.stack.imgur.com/qZTKn.png


S
Sibiraj

此功能已在 npm v5 中引入。使用 npm install -g npm@latest 更新到 npm 和

更新 package.json

删除 /node_modules 和 package-lock.json(如果有的话)运行 npm 更新。这将基于 semver 将依赖包 package.json 更新到最新版本。

更新到最新版本。你可以和npm-check-updates一起去


a
andxyz

我最近不得不更新几个使用 npm 和 package.json 来实现 gruntfile.js 魔法的项目。以下 bash 命令(多行命令)对我来说效果很好:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

这里的想法:将 npm outdated 输出作为 json 传输到 jq
(jq 是一个 json 命令行解析器/查询工具)
(注意 npm outdated 使用 --depth 参数)
jq 会将输出仅剥离为顶级包名称。
最后,xargs 将每个 LIBRARYNAME 一次一个放入 npm install LIBRARYNAME --save-dev 命令中

以上是在运行的机器上对我有用的: node=v0.11.10 osx=10.9.2 npm=1.3.24

这需要:
xargs http://en.wikipedia.org/wiki/Xargs(我相信是我的机器本机)

jq http://stedolan.github.io/jq/(我用 brew install jq 安装它)

注意:我只使用 --save-dev 将更新的库保存到 json 键 devDependancies 内的 package.json,这是我的项目的要求,很可能不是你的。

之后我用一个简单的方法检查所有东西都是肉汁

npm outdated --depth=0

此外,您可以检查当前顶级安装的库版本

npm list --depth=0

我喜欢 jq 并且几乎每天都使用它,但为此我使用简单的 awk 代替:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
我一直在使用 cat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
i
ilyakam

从 npm 版本 5.2.0 开始,有一种方法可以在一行中运行它,而无需在全局 npm 注册表或本地应用程序中安装任何额外的包。这可以通过利用与 npm 捆绑在一起的新 npx 实用程序来完成。 (Click here to learn more.)

在项目的根目录中运行以下命令:

npx npm-check-updates -u && npm i

f
fotijr

如果您使用 yarn,以下命令会将所有包更新到最新版本:

yarn upgrade --latest

从他们的 docs

upgrade --latest 命令升级包与升级命令相同,但忽略 package.json 中指定的版本范围。相反,将使用由 latest 标签指定的版本(可能跨主要版本升级包)。


不更新 package.json - github.com/yarnpkg/yarn/issues/4390 中的依赖项
@Vandesh 请参阅此 YARN 特定线程 stackoverflow.com/questions/62650640/…
g
goksel

我使用 npm-check 来实现这一点。

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

https://i.stack.imgur.com/QSI4Z.png

另一个有用的命令列表将在 package.json 中保留准确的版本号

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm I

更新:如果您使用 yarn,则可以使用 yarn upgrade-interactive --latest


在倒数第二行是 ncu -u 而不是 ncu -ua。我无法编辑,因为不允许更改一个字符。顺便说一句,非常有帮助。
yarn upgrade-interactive --latest 现在是更好的选择
D
David Braun

更新!

基于 npm outdated,updtr 安装最新版本并为每个依赖项运行 npm test。如果测试成功,updtr 会将新版本号保存到您的 package.json。但是,如果测试失败,updtr 将回滚其更改。

https://github.com/peerigon/updtr


C
Chukwu3meka

安全更新

使用“npm outdated”来发现过期的依赖项。使用“npm update”来执行安全的依赖升级。使用 'npm install @latest' 升级到软件包的最新主要版本。

重大更新

使用“npx npm-check-updates -u”。 'npm install' 将所有依赖项升级到最新的主要版本。


答案中列出的命令不正确,会出错。请注意,npm install @latest 实际上应该是 npm install <PACKAGE>@latest
Y
Yangshun Tay

如果您使用 yarnyarn upgrade-interactive 是一个非常时尚的工具,可以让您查看过时的依赖项,然后选择要更新的依赖项。

npm 上使用 Yarn 的更多理由。呵呵。


Yarn 发展迅速,已经达到 1.0,使用起来非常愉快。这应该是新选择的答案。
不更新 package.json - github.com/yarnpkg/yarn/issues/4390 中的依赖项
@JoshHabdas 您可以按照以下线程获取 Yarn 特定解决方案.... stackoverflow.com/questions/62650640/…
O
Ogglas

我必须用来为 NPM 3.10.10 更新 package.json 的命令:

npm install -g npm-check-updates
ncu -a
npm install

背景:

我正在使用来自 @josh3736 的最新命令,但我的 package.json 没有更新。然后我在运行 npm-check-updates -u 时注意到了描述文本:

其声明的版本范围满足以下依赖关系,但安装的版本落后。您可以使用 npm update 安装最新版本,而无需修改包文件。如果您仍然想更新包文件中的依赖项,请运行 ncu -a。

阅读 npm-check-updates 的文档,您可以看到不同之处:

https://www.npmjs.com/package/npm-check-updates

-u, --upgrade: 覆盖包文件 -a, --upgradeAll: 甚至包括那些最新版本满足声明的semver依赖的依赖

ncu 是 npm-check-updates 的别名,如键入 npm-check-updates -u 时的消息所示:

[INFO]: You can also use ncu as an alias

在 npm-check-updates v3 中,-a 是默认行为,覆盖 package.json 仅留给 -u 选项。
Y
Yukulélé

如果您不想安装全局 npm-check-updates,您可以简单地运行它:

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"

爱它!最佳答案在这里。一次性任务不需要不需要的依赖项。谢谢你,先生!
g
gleb bahmutov

上述命令是不安全的,因为您可能会在切换版本时破坏您的模块。相反,我推荐以下

使用 npm shrinkwrap 命令将实际的当前节点模块版本设置为 package.json。

如果它没有破坏您的测试,请使用 https://github.com/bahmutov/next-update 命令行工具将每个依赖项更新到最新版本

npm install -g next-update
// from your package
next-update

对于活动项目,确实需要防范向后不兼容的更改。 OP 更关心开始一个新项目,您希望现在而不是以后破坏并拥有最新版本的工作。
k
krunal shah

如果您使用 npm 5 和节点 8,请尝试以下命令

npm 更新--保存


update 命令似乎不会将依赖项超出原始定义。如果 package.json 准确地声明 "1.2.3",您将不会得到 1.2.4。这可能是好是坏:)
R
Raine Revere

我为最新版本的 NPM 找到了另一个解决方案。我想要做的是用明确的最新版本号替换所有“*”依赖项。所讨论的方法都不适合我。

我做了什么:

将所有“*”替换为“^0.0.0”运行 npm-check-updates -u

package.json 中的所有内容现在都更新到了最新版本。


A
Andrei Gec

如果您正在寻找不涉及安装 npm 包的更简单的解决方案,我会查看 updatepackagejson.com

https://i.stack.imgur.com/vJyHL.png


i
inf3rno

以下代码(已被接受)给我写了“它需要太长时间等等”之类的东西,但什么也没做。可能使用全局标志是问题,idk。

npm i -g npm-check-updates
ncu -u
npm install

我决定使用我的文本编辑器并遵循半手动方法。

我从我的 package.json 的开发依赖项中复制了一个这样的列表(只是更长的时间)到 notepad++ 文本编辑器:

"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",

我将搜索模式设置为正则表达式,使用 ^\s*"([^"]+)".*$ 模式获取包名称并将其替换为 npm uninstall \1 --save-dev \nnpm install \1 --save-dev。点击“全部替换”。输出是这样的:

npm uninstall browserify --save-dev 
npm install browserify --save-dev
npm uninstall expect.js --save-dev 
npm install expect.js --save-dev
npm uninstall karma --save-dev 
npm install karma --save-dev
npm uninstall karma-browserify --save-dev 
npm install karma-browserify --save-dev

我将它复制回 bash 并按回车键。一切都升级了,工作正常。就这样。

"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",

我认为这没什么大不了的,因为您只需要时不时地这样做,但是您可以轻松编写一个脚本来解析 package.json 并升级您的软件包。我认为这种方式更好,因为如果您需要一些特殊的东西,您可以编辑您的列表,例如保留当前版本的库。


使用 npm-check-updates,挂起终端是 Windows 上的一个已知问题。尝试添加 --packageFile package.json 以便知道不等待标准输入。
@RaineRevere 谢谢!
S
Sunil

我通过查看 https://github.com/tjunnone/npm-check-updates 的说明解决了这个问题

$ npm install -g npm-check-updates
$ ncu
$ ncu -u # to update all the dependencies to latest
$ ncu -u "specific module name"  #in case you want to update specific dependencies to latest

N
NetOperator Wibby

90% 的答案都是“使用 npm-check-updates”的变体,这对我来说很疯狂。这是我所做的(相关代码):

{
  "devDependencies": {
    "updates": "^13.0.5" // the version here could be "latest" or "*" tbh...
  },
  "scripts": {
    "test:dependencies": "updates --update ./",
  }
}

运行 npm run test:dependencies(或调用任何依赖项更新脚本)将检查您的 package.json 以获取列出的每个软件包的最新版本,并在发布最新版本时通知您。之后运行 npm i,您将获得最新信息!

此外,与 npm-check-updates 不同,updates 的依赖项为零(在本文发布时,ncu 有 29 个)。


H
Haven

替代方案是

"dependencies":{
    "foo" : ">=1.4.5"
}

每次使用 npm update 时,它都会自动更新到最新版本。有关更多版本语法,您可以在这里查看:https://www.npmjs.org/doc/misc/semver.html


版本控制的一个原因是为了防止来自较新的主要版本的向后不兼容的更改。我建议不要使用此或“*”版本号。 OP 与简化流程有关,同时保持对何时发生的控制。