脚手架开发基础

基础
目标

v create demo
插件介绍
commander
文档地址
说明:命令行插件
使用方法:

const { program } = require(‘commander’)

program.version(‘0.0.1’)

program.option(“-n “, “输出名称”)

// 参数一定要使用<>的形式包裹起来

program.option(”-t --type ”, “项目类型”)

// 输出options

// const options = program.opts()

// console.log(“opts=>”, options)

program.opts()

program

// 命令

.command(“create ”)

// 描述

.description(“创建一个标准的Vue项目”)

// 行为

.action(name => {

console.log(“正在创建Vue项目,名称为:” + name)

})

// 必须要通过parse的方式解析一下才可以, 需要放在最后

program.parse(process.argv)
figlet
文档地址
说明:大型字符-终端打印大型文字
使用方法:

// callback形式

const figlet = require(“figlet”)

figlet(‘Hello World!!’, function (err, data) {

if (err) {

console.log(‘Something went wrong…’)

console.dir(err)

return

}

console.log(data)

});

// async形式

let { promisify } = require(“util”)

let figlet = require(“figlet”)

let asyncFiglet = promisify(require(“figlet”))

async function run() {

try {

let data = await asyncFiglet(“Vue 3”)

console.log(data)

} catch (error) {

console.log(error)

}

}

run()
inquirer
文档地址
说明:命令行参数输入交互
使用方法:

let inquirer = require(“inquirer”)

// prompt接受一个数组, 可以询问多个

inquirer.prompt([

{

name: “userName”,// 打印的文字

type: “input”, // type的类型有很多 list, input, checkbox…

message: “你的名字叫什么?” // 选项

},

{

name: “age”,

type: “checkbox”,

message: “你多大了?”,

choices: [“20-25”, “25-30”, “30-40”, “40以上”]

}

]).then(answer => {

console.log(“回答内容:”, answer)

}).catch((error) => {

if (error.isTryError) { } else { }

})
chalk
文档地址
说明:彩色文字-美化终端字符显示
使用方法:

let chalk = require(“chalk”)

const log = console.log

log(chalk.blue(‘hello’) + ’ world’ + chalk.red(‘!’))
ora
文档地址
说明:loading效果
使用方法:

const ora = require(‘ora’)

const spinner = ora(‘Loading unicorns’).start()

setTimeout(() => {

spinner.color = ‘yellow’

spinner.text = ‘Loading rainbows’

setTimeout(() => {

spinner.stop()

}, 1000)

}, 2000)
download-git-repo
文档地址
说明:仓库下载
使用方法:

let download = require(“download-git-repo”)

// direct:git地址, demo1表示放在哪个

download(‘direct:https://xxx.git’, ‘Demo1’, { clone: true }, function (err) {

console.log(err ? ‘Error’ : ‘Success’)

})
脚手架开发流程
创建空项目/文件夹
通过npm/yarn初始化package文件

npm init

yarn init
安装插件

npm install commander figlet inquirer chalk ora download-git-repo -S

yarn add commander figlet inquirer chalk ora download-git-repo -S
创建bin目录

|-bin

|–index.js

|–init.js

package.json
开发命令行

/**

  • 开发后台脚手架,快速生成标准Vue后台架构
    
    */
    
    let program = require(“commander”)
    
    let { promisify } = require(‘util’)
    
    let asyncFiglet = promisify(require(“figlet”))
    
    let chalk = require(“chalk”)
    
    let inquirer = require(“inquirer”)
    
    let init = require(“./init”)

// 日志打印函数

const log = content => console.log(chalk.yellow(content))

// 设置版本和参数

program.version(“1.0.0”);

program.option(“-n --name ”, “output name”);

// 打印LOGO

async function printLogo() {

let data = await asyncFiglet(“v-cli”);

log(data);

}

program

.command(“create ”)

.description(“创建Vue项目”)

.action(async (name) => {

await printLogo()

log(“准备创建项目…”)

let answer = await inquirer.prompt([

{

name: “language”,

type: “list”,

message: “请选择语言版本”,

choices: [“Javascript”, “Typescript”]

}

])

if (answer.language == “Javascript”) {

// 下载框架

log(“您选择了Javascript版本,即将进入下载模式.”)

init(name);

} else {

log(“敬请期待!!!”)

}

})

// 参数解析

program.parse(process.argv)

// init.js

/**

  • 项目克隆
    
    */
    
    let { promisify } = require(‘util’)
    
    const ora = require(“ora”)
    
    const download = promisify(require(“download-git-repo”))
    
    const shell = require(“shelljs”)
    
    let chalk = require(“chalk”)

// 日志打印函数

const log = content => console.log(chalk.yellow(content))

module.exports = async (appName) => {

log(🚀 创建项目 ${appName})

shell.rm(“-rf”, appName);

const spinner = ora(“下载中…”).start();

try {

await download(“direct:https://xxx.git”, appName, { clone: true })

spinner.succeed(“下载完成”)

log(`

下载完成,请执行下面命令启动项目:

cd ${appName}

yarn 或者 npm init

npm run dev

或者

yarn dev

)  } catch (error) {  log(下载失败`, error)

spinner.stop();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
课程基础概述本门课程,大喵将会打着大家从零打造一款属于大家自己的 CLI命令行脚手架工具,本课程主要面向新手同学,对命令行工具开发,前端工具开发感兴趣的同学,可以通过本门课程学习到如何使用Node.JS开发一款适配自身项目特色的脚手架命令行工具。并且也会带着大家推送自己开发完成的CLI工具到NPM线上仓库,供所有人下载安装使用。整个课程,大喵会详细讲解所需要依赖的第三方模块包的具体使用,让同学们可以举一反三开发具备自身特色的CLI工具,最终大喵会运用到前面所讲解的基础内容,独立自主开发一个具备 damiao [ add | delete | list | init ] 四种子命令的CLI脚手架工具。CLI命令行工具命令行工具(Cmmand Line Interface)简称cli,顾名思义就是在命令行终端中使用的工具。我们常用的 git 、npm、vim 等都是 cli 工具,比如我们可以通过 git clone 等命令简单把远程代码复制到本地。在目前前端工程大流行的环境下,vue-cli、create-reate-app、angular-cli 等等方便快捷的命令行脚手架工具诞生,极大的提升了我们的开发效率与质量,我们可以通过这些脚手架工具在本地快速构建我们的开发项目。 课程目录结构1、CLI课程介绍   2、CLI课程纲领和讲师介绍3、CLI课程内容概述    4、CLI命令行工具及场景应用5、CLI课程准备工具和技术   6、CLI课程收获和收益  7、CLI课程实战案例介绍   8、npm CLI 命令行工具发展现状9、创建第一个命令行自定义命令   10、process.argv 接收命令行参数11、commander 工具使用介绍一   12、commander 工具使用介绍二13、inquirer 工具使用介绍   14、ora 加载工具使用介绍15、chalk 颜色工具使用介绍   16、download-git-repo 仓库工具介绍17、创建脚手架命令   18、创建命令可执行文件19、damiao add 命令行指令开发   20、damiao add 模板录入校验21、damiao delete 命令行指令开发   22、damiao list 命令行指令开发23、damiao init 初始化项目指令开发   24、damiao init 指令参数输入校验25、damiao 命令行指令测试.mp4  26、创建npm个人账号及发布npm仓库27、全局安装脚手架工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackieChan_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值