mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-02-12 18:08:35 -06:00
71 lines
1.7 KiB
JavaScript
Executable File
71 lines
1.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const {
|
|
warn,
|
|
error,
|
|
stopSpinner
|
|
} = require('@vue/cli-shared-utils')
|
|
const semver = require('semver')
|
|
const requiredVersion = require('../package.json').engines.node
|
|
|
|
if (!semver.satisfies(process.version, requiredVersion)) {
|
|
error(
|
|
`You are using Node ${process.version}, but this version of vue-cli ` +
|
|
`requires Node ${requiredVersion}.\nPlease upgrade your Node version.`
|
|
)
|
|
process.exit(1)
|
|
}
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
const chalk = require('chalk')
|
|
const rimraf = require('rimraf')
|
|
const inquirer = require('inquirer')
|
|
const program = require('commander')
|
|
const Creator = require('../lib/Creator')
|
|
const clearConsole = require('../lib/util/clearConsole')
|
|
|
|
async function create () {
|
|
program
|
|
.usage('<app-name>')
|
|
.parse(process.argv)
|
|
|
|
const projectName = program.args[0]
|
|
if (!projectName) {
|
|
warn(`\n Please provide an app name.`)
|
|
program.outputHelp()
|
|
process.exit(1)
|
|
}
|
|
|
|
const targetDir = path.resolve(process.cwd(), projectName)
|
|
if (fs.existsSync(targetDir)) {
|
|
clearConsole()
|
|
const { action } = await inquirer.prompt([
|
|
{
|
|
name: 'action',
|
|
type: 'list',
|
|
message: `Target directory ${chalk.cyan(targetDir)} already exists. Pick an action:`,
|
|
choices: [
|
|
{ name: 'Overwrite', value: 'overwrite' },
|
|
{ name: 'Merge', value: 'merge' },
|
|
{ name: 'Cancel', value: false }
|
|
]
|
|
}
|
|
])
|
|
if (!action) {
|
|
return
|
|
} else if (action === 'overwrite') {
|
|
rimraf.sync(targetDir)
|
|
}
|
|
}
|
|
|
|
const creator = new Creator(projectName, targetDir)
|
|
await creator.create()
|
|
}
|
|
|
|
create().catch(err => {
|
|
stopSpinner(false) // do not persist
|
|
error(err)
|
|
process.exit(1)
|
|
})
|