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
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);
});
複製代碼
優雅的命令行Loading動畫。工具
const ora = require('ora');
const spinner = ora('Loading unicorns').start();
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
}, 1000);
setTimeout(() => {
spinner.stop();
}, 2000);
複製代碼