在 package.json 中使用 * 而不是版本号时如何始终获取最新版本? [复制]

Posted

技术标签:

【中文标题】在 package.json 中使用 * 而不是版本号时如何始终获取最新版本? [复制]【英文标题】:How to always get newest version when using * instead of version number in package.json? [duplicate] 【发布时间】:2018-05-03 16:13:46 【问题描述】:

我对 package.json 有一个私有依赖,它应该始终安装最新版本。所以不是版本,而是*

"dependencies": 
   "@user/package": "*"

在 npmjs 中更新软件包后,如果我输入确切的版本号而不是 *,它仍然会安装带有 npm i 的旧版本 - 它会安装一个新版本,就像一天前一样发布。

一分钟前在 npmjs 更新版本时我遇到了类似的问题,但现在 npmjs 缓存应该已过期并使用新版本进行更新,不是吗?

如何避免此类问题并始终使用* 获取所有内容的最新版本?

我试过npm cache verifynpm cache clean --force。没有运气。

【问题讨论】:

@CodeCaster 感谢您的链接,可能是的。即使在 node_modules 不存在的初始安装期间,我也必须使用 npm update 来获取更新。我现在无法确认,因为我已经在每个包上使用了 npm i 来获取最新版本。 【参考方案1】:

您可以尝试使用 packagename@latest 关键字进行安装,但据我所知,您只能在命令行界面中通过 npm install --save 使用此关键字。

npm install --save mypackage@latest

在这里阅读文档后https://docs.npmjs.com/files/package.json 我发现你可以在 package.json 文件中写“最新”而不是任何版本号。这应该可以解决问题。

【讨论】:

谢谢,但是已经安装了软件包并且其中有很多。我正在寻找一种解决方案,每次我在我的开发机器上打开一个项目时,它可以让我有最新版本的 w/o npm i 命令用于 ~15 个包。通过 npm docs * 而不是 version 应该这样做,但它没有。 好的,编辑了我的答案,您显然可以使用“最新”作为版本号。刚刚发现。 Kauyn * 是有效的版本表达式,问题不是关于它,而是关于 npm install 命令,我必须使用 npm update 由 CodeCaster 回答,感谢支持【参考方案2】:

即使在初始安装依赖项时,也需要使用 npm update 而不是 npm install

这个问题更多地谈论npm install vs npm update

npm install vs. update - what's the difference?

结论:唯一的大区别是已经安装了一个 具有模糊版本控制的模块...

被 npm install 忽略 由 npm update 更新

感谢 CodeCaster 提供正确命令的链接。但是:

问题仍然存在。大多数时候,它每次都有效。但。当 npm 没有解析到最新版本时,刚刚进行了另一个更新。现在将值从* 转换为数字。对我来说似乎是一个错误。

【讨论】:

确实,我尝试使用 *,但当我使用 npm install 时,它并没有按预期工作。发布内部组件确实对版本控制很痛苦。除了将 bat 文件放在根目录上执行 npm install @latest 之外,我还没有看到更精简的方法。

以上是关于在 package.json 中使用 * 而不是版本号时如何始终获取最新版本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 package.json 中使用“*”而不是某个版本的“~”、“^”库是一个好习惯吗?

为啥人们将 typescript 的类型作为依赖项存储在 package.json(而不是 devDep)中? [复制]

如何将 package.json 导入 Typescript 文件而不将其包含在编译输出中?

在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher

package.json 中的版本是不是应该始终遵循 semver?

通过终端检查 npm 包是不是安装在 package.json 中