使用node.js開發命令行工具(二)命令行輸入輸出UI庫

commander.js

node.js命令行開發工具開發庫,使node.js開發CLI工具變得簡單,容許快捷的定義形如<command> [options]的命令。node

基礎用法:git

const program = require('commander');

 program
  .version(require('../package.json').version, '-v, --version') // 定義版本信息
  .usage('<command> [options]'); // 定義命令用法
 
program
  .command('rm <dir>') // 定義一個rm命令
  .description('刪除文件或文件夾') // 給rm命令添加描述信息,獲取命令幫助信息的時候會顯示
  .option('-r, --recursive', 'Remove recursively') // rm容許添加-r或者--recursive命令進行遞歸
  .action(function (dir, cmd) { // 對應命令的處理函數
    console.log('remove ' + dir + (cmd.recursive ? ' recursively' : ''))
  });
 
 program.parse(process.argv); // commander的入口歐,傳入命令行參數執行解析
複製代碼

github倉庫:github.com/tj/commande…github

inquirer.js

node.js 交互式命令行界面開發庫,容許方便的定義使用上下左右進行列表選擇等交互式命令。json

基礎用法:函數

const inquirer = require('inquirer');

inquirer.prompt(
{
    type: 'input', // 問題類型,包括input,number,confirm,list,rawlist,password
    name: 'name', 
    message: '請輸入項目名稱', // 問題
    default: 'unnamed' // 默認值
    validate: (input: string) => {
        if (input.length > 255) { // 輸入驗證:name長度不容許超過255
            return '項目名稱超過限制';
        }
        return true;
    }        
},
{
    type: 'list',
    name: 'type',
    message: '請選擇',
    choices: ['item1', 'item2', 'item3', 'item4'], // 可選選項
    default: 'project'
}).then(answers => {
    console.log(answers.name);
    console.log(answers.type);
});
複製代碼

github倉庫: github.com/SBoudrias/I…

ora

優雅的命令行Loading動畫。工具

const ora = require('ora');

const spinner = ora('Loading unicorns').start();

setTimeout(() => {
	spinner.color = 'yellow';
	spinner.text = 'Loading rainbows';
}, 1000);

setTimeout(() => {
	spinner.stop();
}, 2000);
複製代碼


github倉庫:https://github.com/sindresorhus/ora
相關文章
相關標籤/搜索