美文网首页
【nodejs 命令行交互神器 - inquirer.js】

【nodejs 命令行交互神器 - inquirer.js】

作者: wn777 | 来源:发表于2024-05-10 22:22 被阅读0次

需求

大家在开发时,有时需要从命令行读取用户的输入,或者让用户选择。在nodejs中,这个怎么实现?

原生实现 ❌

process.stdin.setEncoding('utf8');

process.stdin.on('readable', () => {
  let chunk;
  // 使用循环确保我们读取所有的可用输入
  while ((chunk = process.stdin.read()) !== null) {
    console.log(`你输入的数据是: ${chunk}`);
  }
});

process.stdin.on('end', () => {
  process.stdout.write('结束输入.\\n');
});

可以看到 ,整体比较麻烦 ,而且可扩展性不强,如果不是单纯输入,而需要用户选择等,还要更多代码实现。

inquirer框架 ✅

输入


代码

import input from '@inquirer/input';

(async () => {
    const answer = await input({ message: 'Enter your name' });
    console.log(answer)
})()

选择


代码

import select, { Separator } from '@inquirer/select';

const answer = await select({
  message: 'Select a package manager',
  choices: [
    {
      name: 'npm',
      value: 'npm',
      description: 'npm is the most popular package manager',
    },
    {
      name: 'yarn',
      value: 'yarn',
      description: 'yarn is an awesome package manager',
    },
    new Separator(),
    {
      name: 'jspm',
      value: 'jspm',
      disabled: true,
    },
    {
      name: 'pnpm',
      value: 'pnpm',
      disabled: '(pnpm is not available)',
    },
  ],
});

其还支持更多丰富的交互方式,可以在github上搜Inquirer.js查看其更多用法。

相关文章

网友评论

      本文标题:【nodejs 命令行交互神器 - inquirer.js】

      本文链接:https://www.haomeiwen.com/subject/upbefjtx.html