DevGang
Авторизоваться

Глубокое погружение в Yargs: создание инструментов командной строки в Node.js

Yargs облегчает создание приложений CLI в Node.js, предлагая мощное решение для анализа аргументов командной строки и повышения удобства использования за счет автоматического документирования и проверки ввода.

Почему Yargs необходим

Yargs выходит за рамки базового анализа аргументов и позволяет автоматизировать справочную документацию и проверять вводимые пользователем данные, что делает инструменты CLI более удобными и надежными.

Первые шаги: установка и базовое использование

Сначала установите Yargs:

npm install yargs

Простой пример парсинга:

const yargs = require('yargs/yargs');
const { hideBin } = require('yargs/helpers');
const argv = yargs(hideBin(process.argv)).parse();

console.log(`Your input was: ${argv._.join(', ')}`);

Чтобы выполнить этот пример, сохраните код в файле, например, parseExample.js и запустите его с помощью Node.js.

node parseExample.js arg1 arg2 arg3

Определение параметров и флагов

Улучшение нашего сценария для персонализированных поздравлений:

const argv = yargs(hideBin(process.argv))
  .option('name', {
    alias: 'n',
    describe: 'Your name',
    type: 'string',
    demandOption: true
  })
  .option('age', {
    alias: 'a',
    describe: 'Your age',
    type: 'number',
    demandOption: false
  })
  .check((argv) => {
    if (argv.age !== undefined && argv.age < 18) {
      throw new Error("You must be 18 years or older");
    }
    return true; // Validates the arguments
  })
  .argv;

console.log(`Hello, ${argv.name}! ${argv.age ? "You're " + argv.age + " years old." : ''}`);

Сохраните это как greet.js и запустите:

node greet.js --name=Jane --age=30

Сложные приложения CLI с командами

Создаем диспетчер задач:

yargs(hideBin(process.argv))
  .command('add <task>', 'Add a new task', (yargs) => {
    return yargs.positional('task', {
      describe: 'Task description',
      type: 'string'
    });
  }, (argv) => {
    console.log(`Adding new task: ${argv.task}`);
  })
  .command('list', 'List all tasks', () => {
    console.log('Listing tasks...');
    // Code to list tasks here
  })
  .demandCommand(1, 'You need at least one command before moving on')
  .help()
  .argv;

Назовите этот файл taskManager.js. Добавьте задачу:

node taskManager.js add "Learn Yargs"

Перечислите задачи:

node taskManager.js list

Промежуточное ПО для предварительной обработки аргументов

Реализация промежуточного программного обеспечения для журналирования команд:

yargs(hideBin(process.argv))
  .middleware([
    (argv) => {
      console.log('Running command:', argv._[0]);
    }
  ])
  // Define commands and options
  .help()
  .argv;

Интегрируйте это в инструмент CLI, как приведено выше в taskManager.js, для регистрации выполненной команды.

Лучшие практики

  • Структурированные тексты справки: используйте .help() для автоматического создания полезной документации.
  • Модульность команд: для ясности разбейте свой инструмент на команды и подкоманды.
  • Файлы конфигурации: разрешите чтение сложных конфигураций .config() из внешних файлов.

Заключение

Yargs неоценим для создания сложных и интуитивно понятных приложений CLI в Node.js. Следуя примерам и применяя эти методы, разработчики могут создавать мощные и удобные инструменты.

Источник

#JavaScript #NodeJS
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу