[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:

 

posted @   Zhentiw  阅读(393)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2016-01-04 [Javascript] JSON.parse API
2016-01-04 [React Testing] Setting up dependencies && Running tests
2016-01-04 [ES6] Array -- Destructuring and Rest Parameters && for ..of && Arrat.find()
2015-01-04 [AngularJS] Lazy Loading modules with ui-router and ocLazyLoad
2015-01-04 [AngularJS] Lazy loading Angular modules with ocLazyLoad
2015-01-04 [AngularJS] Consistency between ui-router states and Angular directives
点击右上角即可分享
微信分享提示