From 0d139925552e13cd098055ab68d1c3f6061cdf60 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Mon, 15 Jul 2019 21:02:41 +0800 Subject: [PATCH 1/3] fix: fix latest version check when current version is a prerelease --- packages/@vue/cli/lib/util/getVersions.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli/lib/util/getVersions.js b/packages/@vue/cli/lib/util/getVersions.js index d66aede5f5..3d32c03200 100644 --- a/packages/@vue/cli/lib/util/getVersions.js +++ b/packages/@vue/cli/lib/util/getVersions.js @@ -19,6 +19,9 @@ module.exports = async function getVersions () { }) } + // should also check for prerelease versions if the current one is a prerelease + const includePrerelease = !!semver.prerelease(local) + const { latestVersion = local, lastChecked = 0 } = loadOptions() const cached = latestVersion const daysPassed = (Date.now() - lastChecked) / (60 * 60 * 1000 * 24) @@ -26,11 +29,11 @@ module.exports = async function getVersions () { if (daysPassed > 1) { // if we haven't check for a new version in a day, wait for the check // before proceeding - latest = await getAndCacheLatestVersion(cached) + latest = await getAndCacheLatestVersion(cached, includePrerelease) } else { // Otherwise, do a check in the background. If the result was updated, // it will be used for the next 24 hours. - getAndCacheLatestVersion(cached) + getAndCacheLatestVersion(cached, includePrerelease) latest = cached } @@ -42,8 +45,14 @@ module.exports = async function getVersions () { // fetch the latest version and save it on disk // so that it is available immediately next time -async function getAndCacheLatestVersion (cached) { - const version = await pm.getRemoteVersion('vue-cli-version-marker', 'latest') +async function getAndCacheLatestVersion (cached, includePrerelease) { + let version = await pm.getRemoteVersion('vue-cli-version-marker', 'latest') + + if (includePrerelease) { + const next = await pm.getRemoteVersion('vue-cli-version-marker', 'next') + version = semver.gt(next, version) ? next : version + } + if (semver.valid(version) && version !== cached) { saveOptions({ latestVersion: version, lastChecked: Date.now() }) return version From f2f297966bf81d486e62229e3046c19492d8167f Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Mon, 15 Jul 2019 21:07:01 +0800 Subject: [PATCH 2/3] fix: also update version regexp --- packages/@vue/cli/lib/options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli/lib/options.js b/packages/@vue/cli/lib/options.js index 8aad95c6c9..759c256d76 100644 --- a/packages/@vue/cli/lib/options.js +++ b/packages/@vue/cli/lib/options.js @@ -20,7 +20,7 @@ const presetSchema = createSchema(joi => joi.object().keys({ })) const schema = createSchema(joi => joi.object().keys({ - latestVersion: joi.string().regex(/^\d+\.\d+\.\d+$/), + latestVersion: joi.string().regex(/^\d+\.\d+\.\d+(-(alpha|beta|rc.\d+))?$/), lastChecked: joi.date().timestamp(), packageManager: joi.string().only(['yarn', 'npm', 'pnpm']), useTaobaoRegistry: joi.boolean(), From 4aef2470ecd6b2140a69514ffe43fe85ab76441c Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 16 Jul 2019 01:24:50 +0800 Subject: [PATCH 3/3] fix: fix regexp --- packages/@vue/cli/lib/options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli/lib/options.js b/packages/@vue/cli/lib/options.js index 759c256d76..797b1ecb59 100644 --- a/packages/@vue/cli/lib/options.js +++ b/packages/@vue/cli/lib/options.js @@ -20,7 +20,7 @@ const presetSchema = createSchema(joi => joi.object().keys({ })) const schema = createSchema(joi => joi.object().keys({ - latestVersion: joi.string().regex(/^\d+\.\d+\.\d+(-(alpha|beta|rc.\d+))?$/), + latestVersion: joi.string().regex(/^\d+\.\d+\.\d+(-(alpha|beta|rc)\.\d+)?$/), lastChecked: joi.date().timestamp(), packageManager: joi.string().only(['yarn', 'npm', 'pnpm']), useTaobaoRegistry: joi.boolean(),