一步步教你完成一个自己的脚手架并且发布到npm

相信你一定用过vue-cli或者create-react-app或者你公司自己的脚手架。当我第一次用这些脚手架的时候,会觉得这一定是种很高级的玩意,其实了解过之后就发现,脚手架也并不是多么深奥的东西。怎么做一个脚手架呢?接下来我会一步步的教你如何完成一个自己的脚手架(源码:https://github.com/hui-fly/rv-cli,记得star哦)

1. 预备知识

本次教大家实现一个基础的cli工具,将会用到以下一些依赖,下面对这些依赖进行简单介绍:

Inquirer.js

Inquirer.js试图为NodeJs做一个可嵌入式的美观的命令行界面。它的功能主要是:

  • 询问操作者问题
  • 获取并解析用户输入
  • 检测用户回答是否合法
  • 管理多层级的提示
  • 提供错误回调

用法示例:
建立index.js,内容如下

let inquirer = require('inquirer')
inquirer.prompt([
  {
   
    type: 'confirm',
    name: 'handsome',
    message: '我是世界上最帅的男人吗?',
    default: true
  }
]).then((answers) => {
   
  console.log(answers)
})

在文件目录线执行node index.js得到结果如下:
{ handsome:true }

这里type的类型包括

  • input–输入
  • validate–验证
  • list–列表选项
  • confirm–提示
  • checkbox–复选框等等

想了解更多请参考:https://juejin.im/entry/5937c73cac502e0068cf1171

commander

官方解释:commander灵感来自 Ruby,它提供了用户命令行输入和参数解析的强大功能,可以帮助我们简化命令行开发,它提供的功能是:

  • 参数解析
  • 强制多态
  • 可变参数
  • Git 风格的子命令
  • 自动化帮助信息
  • 自定义帮助等

这么说想必大家也比较抽象,直接上例子:

const program = require("commander");
// 定义指令
program
  .version('0.0.1')
  .usage('<command> [options]')
  .command('init', 'Generate a new project from a template')
  .action((option) => {
   
    // 回调函数
  	console.log('Hello World')
  })
// 解析命令行参数
program.parse(process.argv);

同样在文件目录下执行node command.js init
然后就会发现输出  Hello World

如果你想了解更多,可以参考https://wangchujiang.com/wcj/#Commander

download-git-repo

这个看名字大概就能猜出它是干嘛的了,没错—它就是帮我们完成下载远程仓库的,它的用法也比较简单,示例如下:

const download = require('download-git-repo')
download(repository, destination, options, callback)

其中 repository 是远程仓库地址;destination是存放项目的文件夹,下载完之后会默认建立在本目录下;options 是一些选项,比如 { clone:boolean } 表示用 http download 还是 git clone 的形式下载,callback就是下载完成之后的回调函数了。

chalk

这个依赖可以让你输出的内容变得更好看

const chalk = require('chalk');
console.log(chalk.green('success'));
console.log(chalk.red('error'));

ora

这个依赖可以产生一个loading的效果,在进行下载的时候我们会用到它

OK,以上就是我们这次会用到的所有依赖了,接下里开始搞起我们的脚手架吧!


2. 脚手架开发

项目文件结构搭建

  1. 首先初始化我们的项目,建立一个文件夹,我这里就叫rv-cli,你也可以随意取.
  2. 建立好之后,在文件夹下执行npm init(相信你一定已经安装了node了),一路回车即可,然后就会帮你生成一个package.json文件,在package.json添加如下代码–即我们预备知识介绍的依赖
"dependencies": {
   
    "chalk": "^2.4.2",
    "commander": "^2.19.0",
    "download-git-repo": "^1.1.0",
    "inquirer": "^
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值