命令行交互 — Inquirer
Inquirer
: 可以快速创建交互式的命令行用户界面,收集键盘输入的各种信息,并且能够自定义样式和流程,简化用户的操作流程。
提供多种交互类型如列表选择、输入框、确认框、单选框、多选框、编辑框等等,也支持一些定制功能,如输入掩码、编辑确认等。并且它支持 Promise 和 Async/Await 等编程方式,从而允许通过异步操作保持交互面板的工作流程。
使用文档
使用示例
const inquirer = require('inquirer');
inquirer
.prompt([
/* Pass your questions in here */
{
type: 'input',
name: 'yourName',
message: 'your name',
default: 'liam',
validate(val) {
// 校验值
return true
}
},
{
type: 'number',
name: 'age',
message: 'your age'
},
{
type: 'confirm',
name: 'isChicken',
message: 'you are chicken?',
default: true
},
{
type: 'list',
name: 'hobby',
message: 'your hobby',
default: 'rap',
choices: [
{ name: '唱', value: 'sing' },
{ name: '跳', value: 'jump' },
{ name: 'rap', value: 'rap' }
]
},
{
type: 'expand',
name: 'project',
message: 'your project',
choices: [
{ key: 'B', value: 'bcp' },
{ key: 'I', value: 'ifs' }
]
},
{
type: 'checkbox',
name: 'projectMembers',
message: 'choices your project members',
choices: [
{ name: '嘟嘟', value: 'dd' },
{ name: '友友', value: 'yy' },
{ name: '芬芬', value: 'ff' }
]
},
{
type: 'password',
name: 'password',
message: 'your password'
},
{
type: 'editor',
name: 'customValue',
message: 'custom value'
}
])
.then((answers) => {
// Use user feedback for... whatever!!
console.log(answers)
})
.catch((error) => {
if (error.isTtyError) {
// Prompt couldn't be rendered in the current environment
} else {
// Something else went wrong
}
});
命令行loading — ora
ora
是一个用于创建终端加载动画的库,它可以在终端窗口中展示类似于“加载中”的动画。
使用文档
使用示例
const ora = require('ora');
// 创建一个实例,指定加载动画的文本提示
const spinner = ora('Loading data...').start();
// 模拟异步操作,可以将该部分替换为其他异步操作,例如读取文件或从网络中获取数据等
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading completed';
spinner.succeed(); // 成功完成动画
}, 3000);
// 错误处理
setTimeout(() => {
spinner.color = 'red';
spinner.text = 'Loading failed';
spinner.fail(); // 加载失败动画
}, 5000)
命令行文字样式 — chalk
chalk.js
是一个色彩输出工具库,可以实现命令行文字的颜色、背景颜色、加粗、下划线等样式的修改,同时也支持自定义样式。
使用文档
使用示例
const chalk = require('chalk');
// 在控制台中输出红色的 "Hello World!"
console.log(chalk.red('Hello World!'));
// 在控制台中输出带有背景颜色的蓝色文本
console.log(chalk.blue.bgYellow('Welcome to Chalk.js!'));
// 在控制台中输出斜体文本
console.log(chalk.italic('This is italic text.'));
// 在控制台中输出加粗文本
console.log(chalk.bold('This is bold text.'));
// 在控制台中输出绿色的 "Success" 文字,同时将其包装在方框内
console.log(chalk.green.bold.bgWhite('Success!', 'Done'));
// 在控制台中输出多种颜色的文本
console.log(chalk.red.bold('Error: ') + chalk.whiteBright.bgRed('Something went wrong.'));
// 支持多行文字
console.log(chalk.blue('这是一行蓝色的文本.\n') + chalk.green('这是一行绿色的文本.\n') + chalk.red('这是一行红色的文本.'));
命令行日志 — npmlog
npmlog.js
是一个在 Node.js 环境下使用的日志管理工具
,可以方便地输出各种信息,包括调试信息、错误信息、警告信息等。
只简单介绍,具体请看 官方文档
1.日志级别
silly
:最低级别,用于输出无用信息,比如调试信息。verbose
:用于输出详细的信息,包括程序运行过程中的各种状态。info
:用于输出普通的信息,比如程序启动、停止等。http
:用于输出 HTTP 请求信息。warn
:用于输出警告信息,比如程序运行过程中的一些异常情况。error
:用于输出错误信息,比如程序运行过程中的一些错误。silent
:最高级别,用于禁止输出任何日志信息。
// error
log.error("Error message", "Hello world");
// warn
log.warn("Warning message", "Hello world");
// info
log.info("Information message", "Hello world");
设置日志级别
// 最低级别
log.level = "silly"
// 详细
log.level = "verbose"
// 最高级别
log.level = "silent"
2.自定义样式
样式属性
bold
:加粗。dim
:降低亮度。italic
:斜体。underline
:下划线。inverse
:反色。hidden
:隐藏。strikethrough
:删除线。fg
:前景色,可以设置以下颜色值:black、red、green、yellow、blue、magenta、cyan、white、gray、grey、blackBright、redBright、greenBright、yellowBright、blueBright、magentaBright、cyanBright、whiteBrightbg
:背景色,可以设置与前景色相同的颜色值。
自定义级别
可以通过log.addLevel()
方法自定义日志级别并添加样式。比如,以下代码为 success 级别添加了绿色和加粗样式
log.addLevel('success', 2000, { fg: 'green', bold: true });
log.success("success", "Hello world!");
3.开头标题
log.heading
,如果设置,则在每行的开头打印一个标题。
log.heading = "Liam";
log.info("info message", "Hello world!")