1234567891011121314151617181920212223242526272829303132333435 |
- module.exports = function loadCommand (commandName, moduleName) {
- const isNotFoundError = err => {
- return err.message.match(/Cannot find module/)
- }
- try {
- return require(moduleName)
- } catch (err) {
- if (isNotFoundError(err)) {
- try {
- return require('import-global')(moduleName)
- } catch (err2) {
- if (isNotFoundError(err2)) {
- const { chalk, hasYarn, hasPnpm3OrLater } = require('@vue/cli-shared-utils')
- let installCommand = `npm install -g`
- if (hasYarn()) {
- installCommand = `yarn global add`
- } else if (hasPnpm3OrLater()) {
- installCommand = `pnpm install -g`
- }
- console.log()
- console.log(
- ` Command ${chalk.cyan(`vue ${commandName}`)} requires a global addon to be installed.\n` +
- ` Please run ${chalk.cyan(`${installCommand} ${moduleName}`)} and try again.`
- )
- console.log()
- process.exit(1)
- } else {
- throw err2
- }
- }
- } else {
- throw err
- }
- }
- }
|