Skip to content

AndyLZC/sug-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

25562f7 · Mar 6, 2023

History

6 Commits
Mar 1, 2023
Mar 3, 2023
Mar 3, 2023
Mar 3, 2023
Mar 1, 2023
Mar 1, 2023
Mar 6, 2023
Mar 1, 2023
Mar 1, 2023
Mar 3, 2023
Mar 3, 2023
Mar 3, 2023

Repository files navigation

TypeScript 脚手架工具 sug-cli

拉取 vite + vue3 + pinia + vue-router 模板的脚手架工具

使用

npx

$ npx @andylzc/sug-cli create <new app>

全局安装

$ npm i @andylzc/sug-cli -g
$ sug-cli create <new app>

本地开发调试

$ cd sug-cli && npm link
$ cd ..
$ sug-cli create <new app>

从零开始开发一个脚手架

1、为什么需要脚手架

日常开发中,我们根据经验沉淀出一些项目模板,在不同项目中可以进行复用。但如果每次都是通过拷贝代码到新项目,操作效率低下而且容易出错。如果能把模板集成到脚手架,直接通过命令行创建项目,这样便能极大加快项目初始化。

2、开发脚手架需要准备的第三方库

  • commander 命令行工具,帮助解析用户输入的命令
  • inquirer 交互式命令行工具,根据用户动作进行下一步操作
  • ora 显示 loading 动画
  • chalk 美化控制台输出内容样式
  • download-git-repo 用来下载远程仓库模板
  • fs-extra fs 升级版,提供更便利的 API 和编码方式

2.1 commander

program
  .command('print <something>')
  .description('输入一些什么')
  .option('-t', --tip <tip>, '输入提示', '默认值')
  .action((something, cmd)=> {
    console.log(something, cmd)
  })

代码定义了一条交互命令,用户执行 print 命令, 并输入内容,命令面板就会打印用户的消息

    print hello   // 输出:  hello { tip: '默认值' }
    print hello -t world // 输出: hello { tip: 'world' }

commandoption 分别代表执行的命令和命令后面可选参数

2.2 inquirer

等待用户选择操作或者输入内容来决定后续逻辑

const choseQuestion = async () => {
  const { question } = await prompt([
    {
      name: 'question',
      type: 'list',
      message: '你要选哪个框架?',
      choices: ['vue', 'react', 'svelte', 'solid'],
    },
  ])
  console.log(`您的选择是:${question}`)
}

3、实现步骤

3.3 根目录下新建一个 bin 文件夹,然后再创建两个脚本文件,区分开发环境和生产环境要执行

// sug-cli-dev.js

#!/usr/bin/env node
console.log('hello world')

其中文件头部的 #!/usr/bin/env node不可缺少,它代表的含义是执行这个脚本的时候,调用 /usr/bin/env 路径下的 node 解释器

执行 ndoe ./bin/sug-cli-dev , 控制台就会打印出 hello world, 但每次都要输入这个命令有些麻烦,可以在 package.json 进行配置

 // package.json
 "bin": {
    "sug-cli-dev": "./bin/sug-cli-dev.js",
    "sug-cli": "./bin/sug-cli.js",
 }

然后执行 npm link 软链接到全局环境里, 之后就可以直接使用命令 sug-cli create <pkg-name>

About

脚手架cli

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published