diff --git a/packages/@vue/cli/lib/util/ProjectPackageManager.js b/packages/@vue/cli/lib/util/ProjectPackageManager.js index 2c1ab10a8d..73cd6d5c6e 100644 --- a/packages/@vue/cli/lib/util/ProjectPackageManager.js +++ b/packages/@vue/cli/lib/util/ProjectPackageManager.js @@ -290,20 +290,26 @@ class PackageManager { } async upgrade (packageName) { - const realname = stripVersion(packageName) - if ( - isTestOrDebug && - (packageName === '@vue/cli-service' || isOfficialPlugin(resolvePluginId(realname))) - ) { - // link packages in current repo for test - const src = path.resolve(__dirname, `../../../../${realname}`) - const dest = path.join(this.context, 'node_modules', realname) - await fs.remove(dest) - await fs.symlink(src, dest, 'dir') - return + // manage multiple packages separated by spaces + const packageNamesArray = [] + + for (const packname of packageName.split(' ')) { + const realname = stripVersion(packname) + if ( + isTestOrDebug && + (packname === '@vue/cli-service' || isOfficialPlugin(resolvePluginId(realname))) + ) { + // link packages in current repo for test + const src = path.resolve(__dirname, `../../../../${realname}`) + const dest = path.join(this.context, 'node_modules', realname) + await fs.remove(dest) + await fs.symlink(src, dest, 'dir') + } else { + packageNamesArray.push(packname) + } } - return await this.runCommand('add', [packageName]) + if (packageNamesArray.length) return await this.runCommand('add', packageNamesArray) } }