zoukankan      html  css  js  c++  java
  • 开发CLI命令行

    命令行工具:CLI 是在命令行终端使用的工具,如git, npm, vim 都是CLI工具。比如我们可以通过 git clone 等命令简单把远程代码复制到本地

    和 cli 相对的是图形用户界面(gui),gui 侧重于易用,cli 则侧重于效率。

    如何开发一个CLI工具?

    先初始化一个项目:

    mkdir  plgcli
    cd plgcli
    
    创建 plgcli文件夹, 进入文件夹
    修改 package.json文件,增加bin字段
    
    {
      "name": "plgcli",
      "version": "1.0.0",
      "description": "PLG CLI tool",
      "main": "index.js",
      "bin": {
        "PLG": "./bin/index.js"
      },
      "scripts": {
        "test": "test"
      },
      "keywords": [
        "PLG",
        "CLI",
        "Tool"
      ],
      "author": "winyh",
      "license": "ISC",
      "dependencies": {
        "commander": "^2.20.0"
      }
    }
    

      运行 node index.js

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

      一般 cli都有一个特定的命令,比如 git,刚才使用的 code 等,我们也需要设置一个命令,就叫 PLG 吧!如何让终端识别这个命令呢?很简单,打开 package.json 文件,添加一个字段 bin,并且声明一个命令关键字和对应执行的文件:如上

    然后我们测试一下,在终端中输入 PLG,会提示:

    command not found: PLG

    为什么会这样呢?回想一下,通常我们在使用一个 cli 工具时,都需要先安装它

    而我们的 PLG-cli 并没有发布到 npm 上,当然也没有安装过了,所以终端现在还不认识这个命令。通常我们想本地测试一个 npm 包,可以使用:npm link 这个命令,本地安装这个包,我们执行一下

    然后再执行

    PLG

    命令,看正确输出 hello world! 了

    1.完成查看版本的功能

    如PLG -v

    有两个问题

    1.如何获取参数?

    2.如何获取版本信息?

    在 node 程序中,通过 process.argv 可获取到命令的参数,以数组返回

    2.执行复杂命令

    有点多个参数时,或者或者像新建项目这种需要用户输入项目名称(我们称作“问答”)的命令时,通过 switch case  和 process.argv  获取参数就力不从心了,这时需要引入专门处理命令行交互的包commander.提供了用户命令行输入和参数解析强大功能

    commander已经为我们创建好了帮助信息,以及两个参数 -V 和 -h

    3.添加问答操作

    引入inquirer包文件,修改 index.js文件

    #!/usr/bin/env node
    const program = require('commander');
    const inquirer = require("inquirer");
    const initAction = () => {
        inquirer.prompt([{
            type:"input",
            message:"请输入项目名称:",
            name:'name'
        }]).then( answers => {
            console.log(`项目名为: ${answers.name}`)
        })
    }
    program.version(require("../package.json").version)
    
    program
        .command("init")
        .description("创建项目")
        .action(initAction)
    
    program.parse(process.argv)
    

      

    4.运行shell脚本

    引入shelljs库

    5.cli 工具发布到 npm

    npm publish

  • 相关阅读:
    图书管理系统时序图和活动图
    图书管理用例图
    课堂练习(团队)
    课堂练习(RASCI模型)
    课堂练习(分析设想app)
    课堂练习(NABCD model)
    课堂练习(问答题)
    测试用例
    课堂练习(测试计划)
    错误报告
  • 原文地址:https://www.cnblogs.com/winyh/p/11125625.html
Copyright © 2011-2022 走看看