用 NodeJS 写 CLI

CLI 即 command-line interface 的简写,中文称命令行界面,是指可在用户提示符下键入可执行指令的界面,通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。因为最近工作需要,使用 NodeJS 写了一次 CLI。

  • commander

    这是一个 npmjs.org 上的 module,通过它可以更简便的写 CLI,具体可以看这里

  • 直接写

    hello world 为事例

    • 创建并初始化

      mkdir clt-demo
      cd clt-demo
      npm init
      
    • package.json 进行修改

      先看 package.json 的代码

      {
        "name": "clt-demo",
        "version": "0.0.1",
        "description": "a demo for writing CLT with NodeJS",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        "keywords": [
          "nodejs",
          "CLT"
        ],
        "license": "MIT",
        "preferGlobal": true,
        "bin": {
          "commandname": "app.js"
        }
      }
      

      package.json 做了几点的操作

      • 去掉入口 main 属性,因为是 clt,应该是从命令来进入。

      • 增加 preferGlobal,其对应的值为 true,目的是提醒用户在安装时是否使用了 --global 参数。

      • 增加 bin 属性,其值是一个对象,对象中 key 为执行的命令名,value 为入口执行文件。

      package.json 的内容基本结束。

    • 编辑 app.js 文件

      这里是要写一个 hello world

      #! /usr/bin/env node
      console.log('hello world');
      
      • 第一行 #! /usr/bin/env node,叫 Shebang,关于它的解释,可以翻阅 wikipedia

      • 第二行 就是打印出 hello world

    • npm link

      该命令用来将上面写好的脚本安装到系统中

    到这一步基本完成了一个 hello worldclt,执行上面 package.jsonbinkey 的命令即可得到 hello world

      ![clt001](/content/images/2019/08/clt001.png)
    
  • 发布 CLT

    可以看之前的写的「在 NPMJS 上发布并维护包」

  • 源码

    https://github.com/hzb/clt-demo

  • 学习资料

    Writing Command Line Tools with Node

请注意:这里的内容都是原创,你可以免费阅读,但拒绝所有其他任何形式的转载,谢谢配合。如果你发现文章中有错误,请发邮件给我,非常感谢。

The Copyright of all posts & photos posted in tourcoder.com is belong to tourcoder.com. You can read them for free, but you may not reuse anything therein without my permission.