Bunjs ve Typescript ile CLI Uygulamasi gelistirmek

bunjs, typescript, cli, programming

Commander.js ve Inquirer.js, CLI uygulamaları geliştirirken kullanılan iki farklı kütüphanedir ve farklı amaçlara hizmet ederler:

  • Eğer amacınız komut satırı argümanlarını işlemek ve basit komutlar oluşturmaksa, Commander.js daha uygun bir seçim olacaktır.

  • Ancak kullanıcıdan interaktif geri bildirim almanız gerekiyorsa, Inquirer.js kullanmalısınız.

Commander.js:

Komut satırı argümanlarını işlemek ve CLI uygulamaları için bir arayüz sağlamak için kullanılır. Option parsing, komutların tanımlanması ve yardım sayfalarının otomatik üretimi gibi özelliklere sahiptir.

bun install commander
# npm install commander
import { program } from 'commander';

program
  .option('-d, --debug', 'output extra debugging')
  .option('-s, --small', 'small pizza size')
  .option('-p, --pizza-type <type>', 'flavour of pizza');

program.parse(process.argv);

const options = program.opts();
if (options.debug) console.log(options);
console.log('pizza details:');
if (options.small) console.log('- small pizza size');
if (options.pizzaType) console.log(`- ${options.pizzaType}`);

Inquirer.js

Kullanıcıdan interaktif kullanıcı girdisi almak için kullanılır. Prompts, checkboxes, input fields gibi birçok farklı kullanıcı girdi tipini destekler. Kullanıcılarla interaktif CLI uygulamaları yapmak için tercih edilir.

bun install inquirer
# npm install commander
import inquirer from 'inquirer';

const questions = [
  {
    type: 'confirm',
    name: 'toBeDelivered',
    message: 'Is this for delivery?',
    default: false,
  },
  {
    type: 'input',
    name: 'phone',
    message: "What's your phone number?",
    validate(value) {
      const pass = value.match(
        /^([01]{1})?[\\-\\.\\s]?(\\([0-9]{3}\\))?[\\-\\.\\s]?([0-9]{3})[\\-\\.\\s]?([0-9]{4})$/
      );
      if (pass) {
        return true;
      }
      return 'Please enter a valid phone number';
    },
  }
];

inquirer.prompt(questions).then((answers) => {
  console.log('\\nOrder receipt:');
  console.log(JSON.stringify(answers, null, '  '));
});

Last updated

© 2024 ~ Yunus Emre Ak ~ yEmreAk