You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.7 KiB
						
					
					
				const { chalk } = require('@vue/cli-shared-utils') | 
						|
const getPadLength = require('../util/getPadLength') | 
						|
 | 
						|
module.exports = (api, options) => { | 
						|
  api.registerCommand('help', args => { | 
						|
    const commandName = args._[0] | 
						|
    if (!commandName) { | 
						|
      logMainHelp() | 
						|
    } else { | 
						|
      logHelpForCommand(commandName, api.service.commands[commandName]) | 
						|
    } | 
						|
  }) | 
						|
 | 
						|
  function logMainHelp () { | 
						|
    console.log( | 
						|
      `\n  Usage: vue-cli-service <command> [options]\n` + | 
						|
      `\n  Commands:\n` | 
						|
    ) | 
						|
    const commands = api.service.commands | 
						|
    const padLength = getPadLength(commands) | 
						|
    for (const name in commands) { | 
						|
      if (name !== 'help') { | 
						|
        const opts = commands[name].opts || {} | 
						|
        console.log(`    ${ | 
						|
          chalk.blue(name.padEnd(padLength)) | 
						|
        }${ | 
						|
          opts.description || '' | 
						|
        }`) | 
						|
      } | 
						|
    } | 
						|
    console.log(`\n  run ${ | 
						|
      chalk.green(`vue-cli-service help [command]`) | 
						|
    } for usage of a specific command.\n`) | 
						|
  } | 
						|
 | 
						|
  function logHelpForCommand (name, command) { | 
						|
    if (!command) { | 
						|
      console.log(chalk.red(`\n  command "${name}" does not exist.`)) | 
						|
    } else { | 
						|
      const opts = command.opts || {} | 
						|
      if (opts.usage) { | 
						|
        console.log(`\n  Usage: ${opts.usage}`) | 
						|
      } | 
						|
      if (opts.options) { | 
						|
        console.log(`\n  Options:\n`) | 
						|
        const padLength = getPadLength(opts.options) | 
						|
        for (const [flags, description] of Object.entries(opts.options)) { | 
						|
          console.log(`    ${ | 
						|
            chalk.blue(flags.padEnd(padLength)) | 
						|
          }${ | 
						|
            description | 
						|
          }`) | 
						|
        } | 
						|
      } | 
						|
      if (opts.details) { | 
						|
        console.log() | 
						|
        console.log(opts.details.split('\n').map(line => `  ${line}`).join('\n')) | 
						|
      } | 
						|
      console.log() | 
						|
    } | 
						|
  } | 
						|
}
 | 
						|
 |