代码拉取完成,页面将自动刷新
bin
目录 ,下设js文件npm init
初始化项目,同时根据bin目录设置package.json中的bin字段,初始化项目的名字就是命令行命令npm link
将命令行挂载到电脑中#! /usr/bin/env node
代表使用环境变量中的node进行运行process.argv
可以获取到命令行的参数都使用 process.argv 接受 命令行参数会导致大量重复代码( if 判断) 此时可以引入 npm 包
commander
对命令行参数进行处理
commander
是npm的一个包,可以解析命令行参数
// 下载 npm i --save commander
//使用
const { program } = require('commander')
program.parse(process.argv)
commander将会自动解析命令行传入的参数,但无法自定义
const { program } = require('commander')
program
// 设置create命令,第一个参数被视作project名 后续参数被other接受,统一存放数组中
.command('create <project> [other...]')
// 设置别名 相当于--help 与 -h
.alias('c')
// 对命令添加描述
.description('创建项目')
// 命令所执行的具体操作 参数是一个回调函数
.action((project, args) => {
console.log(project)
console.log(args)
})
为防止功能增加后单个文件代码冗长,对代码逻辑进行拆分
诸如npm
在使用npm init
时存在一些交互行为,如要求填入project name,version等,如果没有填入则给定默认的值。此类命令行交互行为可以使用npm包inquirer实现
const inquirer = require('inquirer')
const action_create = (project, args) => {
// inquirer设置命令行交互行为
inquirer.prompt([
{
// 选择交互的方式
type: 'list',
// 填入内容的名称设置
name: 'framwork',
// 可选择的内容
choices: ['express','koa','egg'],
// 命令行展示的信息
message: '请选择所使用的框架'
}
// 对输入进行的处理
]).then(( answer ) => {
console.log(answer);
})
}
可选择的内容
如果需要增加选项,则要手动找到choices
属性,在action行为代码量增加后,并不容易,因此将choices 内容存于config.js中 在原模块进行引入module.exports = {
framwork: ['express','koa','egg']
}
引入inquirer包时 命令行执行报错: code: 'ERR_REQUIRE_ESM' 提示不支持 CommonJS模块导入方法
解决:下载的inquirer版本为8,已经不支持CommonJS语法,更换版本为7的inquirer即可正常执行
本脚手架希望能根据选择下载对应的内容,下载git远程仓库代码需要使用download-git-repo
const download = require('download-git-repo')
//参数依次为 git仓库http链接 ,下载到本地的何处路径(会自动创建文件夹), 以何种方式下载,出错处理
download('direct:xxxx','./aaa',{clone:true},(err)=>{
console.log(err)
})
在下载代码时希望有交互动画则需要使用npm包ora
ora在版本6后只支持ECMAScript语法,本脚手架工具使用语法CommonJS,因此需要下载版本5的ora
const ora = require('ora')
// ora 需要创建实例后使用
//同时需要调用start方法来开始监听下载行为,否则后续动画不会出现
const spinner = ora().start()
//下载时的文字显示
spinner.text('downloading')
//下载成功时的信息提示
spinner.succeed('download successfully')
//下载失败后的信息提示
spinner.fail('download failed')
如果希望给命令行的语句添加颜色,需要使用npm包chalk
chalk在版本5后只支持ECMAScript语法,本脚手架工具使用语法CommonJS,因此需要下载版本4的chalk
const chalk = require('chalk')
//使用方法比较简单 如下即可将命令行显示语句 lalala 颜色修改为绿色
console.log(chalk.green('lalala'))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。