diff --git a/packages/@vue/cli/lib/util/ProjectPackageManager.js b/packages/@vue/cli/lib/util/ProjectPackageManager.js
index 4699e1d4d9..2242137e5b 100644
--- a/packages/@vue/cli/lib/util/ProjectPackageManager.js
+++ b/packages/@vue/cli/lib/util/ProjectPackageManager.js
@@ -5,6 +5,7 @@ const execa = require('execa')
 const minimist = require('minimist')
 const semver = require('semver')
 const LRU = require('lru-cache')
+const chalk = require('chalk')
 
 const {
   hasYarn,
@@ -13,6 +14,7 @@ const {
   hasProjectPnpm
 } = require('@vue/cli-shared-utils/lib/env')
 const { isOfficialPlugin, resolvePluginId } = require('@vue/cli-shared-utils/lib/pluginResolution')
+const { log, warn } = require('@vue/cli-shared-utils/lib/logger')
 
 const { loadOptions } = require('../options')
 const getPackageJson = require('./getPackageJson')
@@ -76,7 +78,13 @@ class PackageManager {
     }
 
     if (!SUPPORTED_PACKAGE_MANAGERS.includes(this.bin)) {
-      throw new Error(`Unknown package manager: ${this.bin}`)
+      log()
+      warn(
+        `The package manager ${chalk.red(this.bin)} is ${chalk.red('not officially supported')}.\n` +
+        `It will be treated like ${chalk.cyan('npm')}, but compatibility issues may occur.\n` +
+        `See if you can use ${chalk.cyan('--registry')} instead.`
+      )
+      PACKAGE_MANAGER_CONFIG[this.bin] = PACKAGE_MANAGER_CONFIG.npm
     }
   }