From 3fbe544ee42c3e31fcf01a255fe6eb9cec3e6fd8 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Sat, 8 Feb 2020 22:16:11 +0530 Subject: [PATCH 1/6] chore: switch to leven --- packages/@vue/cli/bin/vue.js | 9 ++++----- packages/@vue/cli/package.json | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli/bin/vue.js b/packages/@vue/cli/bin/vue.js index 3d5fc86e6c..c890ec2743 100755 --- a/packages/@vue/cli/bin/vue.js +++ b/packages/@vue/cli/bin/vue.js @@ -5,10 +5,7 @@ const { chalk, semver } = require('@vue/cli-shared-utils') const requiredVersion = require('../package.json').engines.node -const didYouMean = require('didyoumean') - -// Setting edit distance to 60% of the input string's length -didYouMean.threshold = 0.6 +const leven = require('leven') function checkNodeVersion (wanted, id) { if (!semver.satisfies(process.version, wanted)) { @@ -261,7 +258,9 @@ if (!process.argv.slice(2).length) { function suggestCommands (unknownCommand) { const availableCommands = program.commands.map(cmd => cmd._name) - const suggestion = didYouMean(unknownCommand, availableCommands) + const suggestion = availableCommands.find(cmd => { + return leven(cmd, unknownCommand) < 3 + }) if (suggestion) { console.log(` ` + chalk.red(`Did you mean ${chalk.yellow(suggestion)}?`)) } diff --git a/packages/@vue/cli/package.json b/packages/@vue/cli/package.json index 1f46d6a0eb..2d9ec19ff3 100644 --- a/packages/@vue/cli/package.json +++ b/packages/@vue/cli/package.json @@ -45,6 +45,7 @@ "javascript-stringify": "^1.6.0", "js-yaml": "^3.13.1", "jscodeshift": "^0.7.0", + "leven": "^3.1.0", "lodash.clonedeep": "^4.5.0", "lru-cache": "^5.1.1", "minimist": "^1.2.0", From 4f84d20dbe010850ea8d5316b4074692560feb37 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Sun, 9 Feb 2020 11:38:45 +0530 Subject: [PATCH 2/6] chore: update lock file --- yarn.lock | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7b3dda15e2..88ba575e30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2529,7 +2529,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/mocha@^5.2.4", "@types/mocha@^5.2.6": +"@types/mocha@^5.2.6": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== @@ -2798,14 +2798,6 @@ resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a" integrity sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w== -"@vue/test-utils@1.0.0-beta.29": - version "1.0.0-beta.29" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0" - integrity sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA== - dependencies: - dom-event-types "^1.0.0" - lodash "^4.17.4" - "@vue/test-utils@1.0.0-beta.31": version "1.0.0-beta.31" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.31.tgz#580d6e45f07452e497d69807d80986e713949b73" @@ -5161,7 +5153,7 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -chromedriver@80, chromedriver@^80.0.0: +chromedriver@^80.0.0: version "80.0.0" resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-80.0.0.tgz#f9e2af4c2117e7e07dc4558cf9496a70ad6c3ddc" integrity sha512-W4tIbaOve7HeGFLnbbZMV4AUlnBaapL+H41fvDFKOXCmUvgPhxVN9y/c3EgmsOcokLQkqxpOC/txEujms1eT0w== @@ -14621,7 +14613,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@1.11.0, puppeteer@^1.11.0: +puppeteer@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770" integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ== @@ -17859,7 +17851,7 @@ vue-router@^3.1.3, vue-router@^3.1.5: resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.5.tgz#ff29b8a1e1306c526b52d4dc0532109f16c41231" integrity sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg== -vue-server-renderer@^2.6.10, vue-server-renderer@^2.6.11: +vue-server-renderer@^2.6.10: version "2.6.11" resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.11.tgz#be8c9abc6aacc309828a755c021a05fc474b4bc3" integrity sha512-V3faFJHr2KYfdSIalL+JjinZSHYUhlrvJ9pzCIjjwSh77+pkrsXpK4PucdPcng57+N77pd1LrKqwbqjQdktU1A== From f160bad636cbe848869b9936fa409c355f096c96 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 13 Feb 2020 11:39:43 +0530 Subject: [PATCH 3/6] chore: iterate through all the available commands and find closest match --- packages/@vue/cli/bin/vue.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli/bin/vue.js b/packages/@vue/cli/bin/vue.js index c890ec2743..3532066fb5 100755 --- a/packages/@vue/cli/bin/vue.js +++ b/packages/@vue/cli/bin/vue.js @@ -257,10 +257,15 @@ if (!process.argv.slice(2).length) { function suggestCommands (unknownCommand) { const availableCommands = program.commands.map(cmd => cmd._name) - - const suggestion = availableCommands.find(cmd => { - return leven(cmd, unknownCommand) < 3 + + let suggestion + + availableCommands.forEach(cmd => { + if (leven(cmd, unknownCommand) < 3) { + suggestion = cmd + } }) + if (suggestion) { console.log(` ` + chalk.red(`Did you mean ${chalk.yellow(suggestion)}?`)) } From 9ea233e04b13638c3f909e2ba12fa39088e5dcf4 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 13 Feb 2020 11:58:29 +0530 Subject: [PATCH 4/6] chore: update yarn.lock --- packages/@vue/cli/package.json | 1 - yarn.lock | 9 ++------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/@vue/cli/package.json b/packages/@vue/cli/package.json index 2d9ec19ff3..fc2edaf8a7 100644 --- a/packages/@vue/cli/package.json +++ b/packages/@vue/cli/package.json @@ -33,7 +33,6 @@ "commander": "^2.20.0", "debug": "^4.1.0", "deepmerge": "^4.2.2", - "didyoumean": "^1.2.1", "download-git-repo": "^1.0.2", "ejs": "^2.7.1", "envinfo": "^7.5.0", diff --git a/yarn.lock b/yarn.lock index 88ba575e30..0886cbe102 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6770,11 +6770,6 @@ dicer@0.3.0: dependencies: streamsearch "0.1.2" -didyoumean@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" - integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= - diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -14613,7 +14608,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@^1.11.0: +puppeteer@1.11.0, puppeteer@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770" integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ== @@ -17851,7 +17846,7 @@ vue-router@^3.1.3, vue-router@^3.1.5: resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.5.tgz#ff29b8a1e1306c526b52d4dc0532109f16c41231" integrity sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg== -vue-server-renderer@^2.6.10: +vue-server-renderer@^2.6.10, vue-server-renderer@^2.6.11: version "2.6.11" resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.11.tgz#be8c9abc6aacc309828a755c021a05fc474b4bc3" integrity sha512-V3faFJHr2KYfdSIalL+JjinZSHYUhlrvJ9pzCIjjwSh77+pkrsXpK4PucdPcng57+N77pd1LrKqwbqjQdktU1A== From 461d74827f81138c57948c228601c924d4f4e865 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 13 Feb 2020 12:00:21 +0530 Subject: [PATCH 5/6] fix: lint --- packages/@vue/cli/bin/vue.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli/bin/vue.js b/packages/@vue/cli/bin/vue.js index 3532066fb5..826cea1586 100755 --- a/packages/@vue/cli/bin/vue.js +++ b/packages/@vue/cli/bin/vue.js @@ -257,9 +257,9 @@ if (!process.argv.slice(2).length) { function suggestCommands (unknownCommand) { const availableCommands = program.commands.map(cmd => cmd._name) - + let suggestion - + availableCommands.forEach(cmd => { if (leven(cmd, unknownCommand) < 3) { suggestion = cmd From 74de1171bbab064d0bacb72b9f783dd024062bbd Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 13 Feb 2020 14:39:01 +0530 Subject: [PATCH 6/6] chore: find the best possible match --- packages/@vue/cli/bin/vue.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli/bin/vue.js b/packages/@vue/cli/bin/vue.js index 826cea1586..a94f643425 100755 --- a/packages/@vue/cli/bin/vue.js +++ b/packages/@vue/cli/bin/vue.js @@ -261,7 +261,8 @@ function suggestCommands (unknownCommand) { let suggestion availableCommands.forEach(cmd => { - if (leven(cmd, unknownCommand) < 3) { + const isBestMatch = leven(cmd, unknownCommand) < leven(suggestion || '', unknownCommand) + if (leven(cmd, unknownCommand) < 3 && isBestMatch) { suggestion = cmd } })