仿vue-cli搭建属于自己的脚手架的方法步骤

2020-06-14 06:12:19易采站长站整理

if (err) console.log(err)
console.log('n')
console.log(chalk.green('Deleted successfully!n'))
console.log(chalk.grey('The latest template list is: n'))
console.log(tplObj)
console.log('n')
})
})

应该很好理解,就不过多解释了,我们直接执行

xr delete
看下效果:

xr-list

这个更简单了,两行代码搞定:


#!/usr/bin/env node

const tplObj = require(`${__dirname}/../template`)
console.log(tplObj)

是不是简单到爆:boom:。我们执行

xr list
看看效果:

因为刚才一添加一删除,所以目前没有模板,就输出

{}

xr-init

这应该是最主要(但不难)的一步了,毕竟我们写到现在还没有通过命令初始化过一个项目呢:sob:。所以这步的重点就是执行

download
方法,并传入相应参数,具体看代码:


#!/usr/bin/env node

const program = require('commander')
const chalk = require('chalk')
const ora = require('ora')
const download = require('download-git-repo')
const tplObj = require(`${__dirname}/../template`)

program
.usage('<template-name> [project-name]')
program.parse(process.argv)
// 当没有输入参数的时候给个提示
if (program.args.length < 1) return program.help()

// 好比 vue init webpack project-name 的命令一样,第一个参数是 webpack,第二个参数是 project-name
let templateName = program.args[0]let projectName = program.args[1]// 小小校验一下参数
if (!tplObj[templateName]) {
console.log(chalk.red('n Template does not exit! n '))
return
}
if (!projectName) {
console.log(chalk.red('n Project should not be empty! n '))
return
}

url = tplObj[templateName]

console.log(chalk.white('n Start generating... n'))
// 出现加载图标
const spinner = ora("Downloading...");
spinner.start();
// 执行下载方法并传入参数
download (
url,
projectName,
err => {
if (err) {
spinner.fail();
console.log(chalk.red(`Generation failed. ${err}`))
return
}
// 结束加载图标
spinner.succeed();
console.log(chalk.green('n Generation completed!'))
console.log('n To get started')
console.log(`n cd ${projectName} n`)
}
)

ok,我们执行一下

xr init simple test
,记得先执行一下
xr add