使用esbuild创建自己的cli-总结

1. ejs渲染

我们可以通过**ejs**模板引擎来去渲染我们的ejs文件

import ejx from 'ejs'
const indexTemplate = fs.readFileSync(
      path.resolve(__direname, '../template/index.ejs')
  )

const code = ejx.render(indexTemplate.toString(), {
   // ...
})

2. 绝对路径

**esbuild**中,没有**__dirname**来去让我们获取到当前文件夹,我们则采用如下的方式

import { fileURLToPath } from 'url'
import path from 'path'

const __direname = fileURLToPath(import.meta.url)

const indexTemplate = fs.readFileSync(
    path.resolve(__direname, '../template/index.ejs')
)

3 模块引擎的格式化

import prettier from 'prettier'
prettier.format(code, { parser: 'babel' })

4. 终端交互输入

我们可以通过**inquirer**这个库,来设置一些问题,来让用户选择

import inquirer from 'inquirer'
await inquirer.prompt([
   {
    type: 'input',
    name: 'port',
    default: () => 8080,
    message: 'set port number'
  },
  {
    type: 'input',
    name: 'packageName',
    message: 'set package name',
    validate (val) {
      if (val) return true
      return 'Please input packName'
    }
  },
    {
    type: 'checkbox',
    name: 'middleware',
    choices: [
      { name: 'koaStatic' },
      { name: 'koaRouter' },
    ]
  }
])

5. 安装依赖

这里用**yarn**安装依赖

import { execa } from 'execa'
execa('yarn', {
    cwd: getRootPath(), // 安装依赖到哪个文件夹下
    stdio: [2, 2, 2], // 出现安装的进度
})

6. 执行进程

我们可以通过**chalk**来给我们的执行进度,打上输出

import chalk from 'chalk'

console.log(chalk.blue()) // 这样就能打出蓝色的字体
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值