
需求
大家在开发时,有时需要从命令行读取用户的输入,或者让用户选择。在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查看其更多用法。


















