JavaScript:
Чтение аргументов командной строки
Как это сделать:
Вот прямой способ сделать это в Node.js:
// process.argv содержит аргументы командной строки
const args = process.argv.slice(2);
console.log(args);
// Запустите этот скрипт с: node yourscript.js firstArg secondArg
Пример выходных данных, если вы запустите node yourscript.js pineapple 42
:
['pineapple', '42']
Использование пакета, такого как yargs
, упрощает жизнь, позволяя определять и получать доступ к аргументам по имени.
// Установить с помощью npm install yargs
const yargs = require('yargs/yargs');
const { hideBin } = require('yargs/helpers');
const argv = yargs(hideBin(process.argv)).argv;
console.log(argv);
// Запустите это с: node yourscript.js --fruit pineapple --number 42
И вы получите:
{ fruit: 'pineapple', number: '42' }
Чисто и ясно, с именованными параметрами.
Углубляемся
В старину аргументы считывались в C с помощью argc
и argv
в функции main
. В Node.js используется process.argv
. Это массив, где первый элемент — это путь к исполняемому файлу node, второй — имя файла скрипта, а остальные — ваши собственные аргументы.
yargs
полезен для сложных приложений: он анализирует аргументы в удобный объект, управляет значениями по умолчанию и даже автоматически генерирует сообщения справки.
Есть также пакет minimist
, более легкая альтернатива yargs
, если вам нравится минимализм.
В глубине души Node.js использует process.binding('options')
от V8 для разбора, который не доступен обычному пользователю. Этот внутренний метод обладает огромным количеством возможностей под капотом, управляя разбором и получением параметров командной строки.
Смотрите также
- Документация Node.js process.argv: https://nodejs.org/docs/latest/api/process.html#process_process_argv
- GitHub репозиторий Yargs: https://github.com/yargs/yargs
- Minimist на npm: https://www.npmjs.com/package/minimist