[Tools] Create a Simple CLI Tool in Node.js with CAC

Posted Answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Tools] Create a Simple CLI Tool in Node.js with CAC相关的知识,希望对你有一定的参考价值。

Command-line tools can help you with all sorts of tasks. This lesson covers the very basics of setting up a CLI tool in Node.js by creating your project with npm, setting up your bin script, and using CAC to parse a single argument.

 

Create a new project, change the "name" porp\'s value to "hi", then add a "bin" prop, so next time, when we invoke "hi", it will run the command in "bin".

package.json

{
  "name": "hi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bin": "./index.js",
  "devDependencies": {
    "cac": "6.3.12"
  }
}

 

Install:

npm i -D cac

 

Create index.js file:

  • Make sure you have \'
    #!/usr/bin/env node
    \' on the top of the file, then it knows should run in node env.
  • Using cac to build commad, you can define \'option\', \'command\'
  • Last you should always call cli.parse() to run the command
#!/usr/bin/env node

const cli = require(\'cac\')();
cli.option(\'--type <type>\', \'Provide type, [date|foo]\')
// name is a required field
cli.command(\'<name>\', \'Provide your name\')
    .action((name, options) => {
        const {type} = options;
        if (type === \'date\') {
            console.log(`Hi ${name}, Today is ${new Date().toDateString()}`)
        } else if (type === \'foo\') {
            console.log(`Hi ${name}, you should take a rest!`)
        } else {
            console.log(`Hi ${name}, Good job!`)
        }
        
    })

cli.help()
// Display version number when `-h` or `--help` appears
cli.version(\'0.0.0\')
cli.parse()

 

Run:

 

以上是关于[Tools] Create a Simple CLI Tool in Node.js with CAC的主要内容,如果未能解决你的问题,请参考以下文章

ListView simple adapter

[Tools] Create a Chrome Extension

Artix-7 50T FPGA试用笔记之Create a simple MicroBlaze System

git - Trying to create a local repo of go.tools that is go get-able - Stack Overflow

[Tools] Batch Create Markdown Files from a Template with Node.js and Mustache

sqpark编译时maven的pom文件内容(org.scala.tools.archetypes:scala-archetype-simple)