Skip to content

Commit debc3f1

Browse files
authored
fix: fix latest version check when current version is a prerelease (#4295)
1 parent 44325fa commit debc3f1

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

packages/@vue/cli/lib/options.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const presetSchema = createSchema(joi => joi.object().keys({
2020
}))
2121

2222
const schema = createSchema(joi => joi.object().keys({
23-
latestVersion: joi.string().regex(/^\d+\.\d+\.\d+$/),
23+
latestVersion: joi.string().regex(/^\d+\.\d+\.\d+(-(alpha|beta|rc)\.\d+)?$/),
2424
lastChecked: joi.date().timestamp(),
2525
packageManager: joi.string().only(['yarn', 'npm', 'pnpm']),
2626
useTaobaoRegistry: joi.boolean(),

packages/@vue/cli/lib/util/getVersions.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@ module.exports = async function getVersions () {
1919
})
2020
}
2121

22+
// should also check for prerelease versions if the current one is a prerelease
23+
const includePrerelease = !!semver.prerelease(local)
24+
2225
const { latestVersion = local, lastChecked = 0 } = loadOptions()
2326
const cached = latestVersion
2427
const daysPassed = (Date.now() - lastChecked) / (60 * 60 * 1000 * 24)
2528

2629
if (daysPassed > 1) {
2730
// if we haven't check for a new version in a day, wait for the check
2831
// before proceeding
29-
latest = await getAndCacheLatestVersion(cached)
32+
latest = await getAndCacheLatestVersion(cached, includePrerelease)
3033
} else {
3134
// Otherwise, do a check in the background. If the result was updated,
3235
// it will be used for the next 24 hours.
33-
getAndCacheLatestVersion(cached)
36+
getAndCacheLatestVersion(cached, includePrerelease)
3437
latest = cached
3538
}
3639

@@ -42,8 +45,14 @@ module.exports = async function getVersions () {
4245

4346
// fetch the latest version and save it on disk
4447
// so that it is available immediately next time
45-
async function getAndCacheLatestVersion (cached) {
46-
const version = await pm.getRemoteVersion('vue-cli-version-marker', 'latest')
48+
async function getAndCacheLatestVersion (cached, includePrerelease) {
49+
let version = await pm.getRemoteVersion('vue-cli-version-marker', 'latest')
50+
51+
if (includePrerelease) {
52+
const next = await pm.getRemoteVersion('vue-cli-version-marker', 'next')
53+
version = semver.gt(next, version) ? next : version
54+
}
55+
4756
if (semver.valid(version) && version !== cached) {
4857
saveOptions({ latestVersion: version, lastChecked: Date.now() })
4958
return version

0 commit comments

Comments
 (0)