semver + latest 与 NPM 依赖
semver + latest with NPM dependencies
有效的 NPM 依赖项可能如下所示:
dependencies:{
"lodash":"latest"
}
但我是这样使用 semver 的:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用 semver 或临时处理 'latest'?
Is there a way to handle 'latest' with semver ....?
不,不使用 semver 包本身,因为它不知道 'latest' 是什么。存储在 npm 注册表中的元数据将给定包的 'latest' 与 semver 相关联。
考虑删除 npm-view command, using execSync()
or exec()
,以检索 npm 注册表中包的 'latest' semver 1.然后将返回值作为第二个参数传递给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
- 正如您从上一个问题中了解到的那样 here。 'latest' 版本到底解析了什么,无论是 'stable'、'alpha' 、'beta'、'rc' 等可能会有所不同。但是,如果包所有者已正确发布更新,则最有可能是 'stable'.
有效的 NPM 依赖项可能如下所示:
dependencies:{
"lodash":"latest"
}
但我是这样使用 semver 的:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用 semver 或临时处理 'latest'?
Is there a way to handle 'latest' with semver ....?
不,不使用 semver 包本身,因为它不知道 'latest' 是什么。存储在 npm 注册表中的元数据将给定包的 'latest' 与 semver 相关联。
考虑删除 npm-view command, using execSync()
or exec()
,以检索 npm 注册表中包的 'latest' semver 1.然后将返回值作为第二个参数传递给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
- 正如您从上一个问题中了解到的那样 here。 'latest' 版本到底解析了什么,无论是 'stable'、'alpha' 、'beta'、'rc' 等可能会有所不同。但是,如果包所有者已正确发布更新,则最有可能是 'stable'.