npm - semver + latest 具有 NPM 依赖项
问题描述
一个有效的 NPM 依赖可能如下所示:
dependencies:{
"lodash":"latest"
}
但我像这样使用 semver:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用 semver 或临时处理“最新”?
解决方案
有没有办法用 semver 处理“最新”......?
不,不使用semver包本身,因为它不知道“最新”是什么。存储在 npm 注册表中的元数据将给定包的“最新”与 semver 相关联。
考虑使用or删除npm-view命令,以检索 npm 注册表1中包的“最新”semver 。然后将返回值作为第二个参数传递给比较。execSync()
exec()
semver.eq(...)
例如:
const semver = require('semver');
const execSync = require('child_process').execSync;
function getLatestVersion(pkg) {
return JSON.parse(execSync(`npm view ${pkg} version --json`,
{ stdio: ['ignore', 'pipe', 'pipe'] }).toString());
}
const isEqual = semver.eq('2.1.3', getLatestVersion('lodash'));
console.log(isEqual); // --> false
- 正如您从这里的上一个问题中了解的那样。'latest'版本的确切解析是'stable'、'alpha'、'beta'、'rc'等可能会有所不同。但是,如果包所有者已正确发布更新,则它很可能是'stable'。
推荐阅读
- python - ret在下面的程序中有什么用
- c# - 如何使用 C# 从 .slx 文件中读取元数据?
- charts - 谷歌图表——轴值重叠以及如何避免
- java - 在弹出菜单上创建随机选择
- matlab - 在 MATLAB 中更改 SOM 补丁面和文本的颜色
- django - 值错误:解压 django 的值太多
- android - 使用 MVVM 架构。解决交叉问题的最佳方法是什么?
- .htaccess - 我正在使用 CloudFlare。如何使用 .htaccess 阻止对我的站点管理员的访问,但我的 IP 地址除外
- ios - CarouselView.FormsPlugin 未在 iOS 上显示
- .net - 避免使用构建器在查询中更改 mongo 驱动程序日期