0.0.7 • Published 6 years ago

yty-cli v0.0.7

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

my-cli

custom fe staging

目的

学习本地命令行对远程项目的控制,目前只是简单的脚手架,只有单纯的初始化、拷贝模板功能。

参考文档

分析流程

  • 命令行参数获取

    在命令行中能获取的首要信息就是 process.argv, 所以要根据参数的不同进行相应的操作,那么就用到了 commander 的命令行接口,其中的option 接口可以捕获到命令行的参数,来进行相应的操作。 eg:

    const program = require('commander');
    
    program
      .version(require('../package').version, '-v, --version')
      .usage('[options]')
      .option('-i, --init', '初始化项目文件夹')
      .parse(process.argv)
    
    // 如果是init则进行初始化的操作
    if (program.init) {
      require('../src/init')()
    }
  • 自动化配置

    如果把所有参数都放在一行命令上,那么就太麻烦了,参数只是用作入口,具体一点的当然还是希望自己控制,那么就要支持输入、选择等可操作的功能,然后就是inquirer登场,它的作用就是提醒使用者一步一步的配置项目,比如最基础的我想给项目起一个名字,eg:

    const { project } = await inquirer.prompt([
      {
        name: 'project',
        message: 'please enter the project name',
        default: 'my-project'
      }
    ])
    
    console.log(project) // my-project

    可以自己输入,也会有默认的项目名称。随着前端框架、编译工具的不断增加,可选择的越来越多,这种自动化配置显得越来越重要。

  • 拉取模板

    配置完成之后,要根据配置生成对应的模板,前提是会有一个基础的模板,在基础的模板上进行工具的选择,配置文件可以生成到本地保存,下来,配置项目的时候在进行读取,我这里只介绍把远程模板拉取到本地,以后或许会增加配置的node文件,由于我的模板是放在git仓库中的,所以可以使用download-git-repo把远程的模板拉取到本地,eg:

    const path = require('path')
    const os = require('os')
    const download = require('download-git-repo')
    
    const tmpdir = path.join(os.tmpdir(), 'my-cli') //获取系统临时文件存放地址,并且加上我们自己的文件名称,用于管理
    download('git项目', tmpdir, err => {
      if (err) return reject(err)
      resolve()
    })

    这里只是拉取到临时文件夹下,可以再对文件进行相应的操作,然后拷贝到自己的项目下,就完成了本地项目的构建。

总结

  • 比较困难的就两个吧,第一个就是通过命令行获取配置文件,就是上面的步骤,第二个就是把配置文件应用到你的基础模板上,这也是暂时没有做到的,以后会慢慢实现。