NODE-CLI(1)

NAME

node-cliDesign for quickly developing CLI applications using Node.js

SYNOPSIS

INFO

37 stars
4 forks
0 views
JavaScriptDeveloper Tools

DESCRIPTION

Design for quickly developing CLI applications using Node.js

README

@axiosleo/cli-tool

English | 简体中文

NPM version npm download node version CI Build Status Codecov License FOSSA Status

Design for quickly developing CLI applications using Node.js

See detail usage from wiki

Installation

npm install @axiosleo/cli-tool

Quickly initialize application

npm install @axiosleo/cli-tool -g

cli-tool init <app-name>

make command file

cli-tool make <command-name> <commands-dir-path>

for example

cli-tool make test ./commands/ # will generate command file on ./commands/test.js

run command js script

cli-tool exec ./command/test.js

Usage

Start application

const { App } = require('@axiosleo/cli-tool');
const app = new App({
  name: 'cli-tool',      // cli app command name, required
  version: '1.0.0',      // cli app version, required
  desc: 'cli app description',
  commands_dir: '/path/to/commands/dir/', // will auto load command files
  commands_sort: ['help', ... ],
  commands_group: {
    'group description': ['command_name', ...],
  }
});
app.start();

Run single command

  • register with command class
const CommandExample = require("/path/to/your/command/file");
app.register(CommandExample);

app.exec("<command-name>");

  • register with command object
const CommandExample = require("/path/to/your/command/file");
const command = new CommandExample();
app.register(command);

app.exec("<command-name>");

  • register with command file path
app.register("/path/to/your/command/file");

app.exec("<command-name>");

Use locales

The "desc" of CLI Application and Command will be automatically translated by using the locales json file.

locales example json file : locales

see detail from locales wiki

const path = require("path");
app.locale({
  dir: path.join(__dirname, "../locales"), // /path/to/app/locales/dir
  sets: ["en-US", "zh-CN"], // cannot be empty, the first set as default.
});
app.start(); // set locale before start app

Command Class Example

"use strict";

const { Command } = require("@axiosleo/cli-tool");

class CommandExample extends Command { constructor() { super({ name: "command-name", desc: "command desc", alias: ["command-alia1", "command-alia2"], });

/**
 * add argument of current command
 * @param name argument name
 * @param desc argument description
 * @param mode argument mode : required | optional
 * @param default_value only supported on optional mode
 */
this.addArgument(&quot;arg-name&quot;, &quot;desc&quot;, &quot;required&quot;, null);

/**
 * add option of current command
 * @param name option name
 * @param short option short name
 * @param desc option description
 * @param mode option mode : required | optional
 * @param default_value only supported on optional mode
 */
this.addOption(&quot;test&quot;, &quot;t&quot;, &quot;desc&quot;, &quot;required&quot;, null);

}

async exec(args, options, argList, app) { // do something in here

// get arg&amp;option by name
const arg1 = args.argName;
const option1 = options.optionName;

// get arg by index
const index = 0;
const arg2 = argList[index];

// ask for answer
const answer = await this.ask(&quot;Please input your answer&quot;);

// ask for confirm, default value is &#39;false&#39;
const confirm = await this.confirm(&quot;Confirm do this now?&quot;, false);

// select action
const action = await this.select(&quot;Select an action&quot;, [&quot;info&quot;, &quot;update&quot;]);

// print table
const rows = [[&quot;Bob&quot;, 2]];
const head = [&quot;Name&quot;, &quot;Score&quot;];
this.table(rows, head);

} }

module.exports = CommandExample;

License

This project is open-sourced software licensed under MIT.

FOSSA Status

SEE ALSO

clihub3/4/2026NODE-CLI(1)