Как разобрать аргументы командной строки в node.js?
Аргументы командной строки - это строки текста, используемые для передачи дополнительной информации программе, когда приложение запускается через интерфейс командной строки (CLI) операционной системы. В Node.js все аргументы командной строки, полученные оболочкой, передаются процессу в массиве с именем argv (аргументы-значения).
Мы будем использовать два метода для анализа аргументов командной строки через массив process.argv, а также популярные пакеты yargs.
Метод 1: Использование process.argv: это самый простой способ получить аргументы с помощью массива process.argv. Node.js предоставляет этот массив для каждого запущенного процесса в виде process.argv . Первый элемент массива process.argv - это путь в файловой системе, указывающий на исполняемый файл узла. Второй элемент - это путь к исполняемому файлу JavaScript, а остальные элементы массива - это аргументы, переданные через cmd .
Примечание . Первые два элемента массива process.argv присутствуют всегда, даже если мы не передаем никаких аргументов.
Пример 1: Имя файла: gfg.js
Javascript
for (let i = 0; i < process.argv.length; ++i) { console.log(`index ${i} argument -> ${process.argv[i]}`); } |
Запустите файл gfg.js, используя следующую команду, передав аргументы:
node gfg.js Я люблю GeeksforGeeks
Выход:
Пример 2: Программа для выполнения арифметической операции в соответствии с аргументами, переданными через cmd .
Имя файла: arthimatic.js
Javascript
// To trim first 2 elements const arg = process.argv.slice(2); arg[1] = Number(arg[1]); arg[2] = Number(arg[2]); switch (arg[0]) { case '+' : console.log(`Result of ${arg[1]} + ${arg[2]} = ${arg[1] + arg[2]}`); break ; case '*' : console.log(`Result of ${arg[1]} * ${arg[2]} = ${arg[1] * arg[2]}`); break ; case '-' : console.log(`Result of ${arg[1]} - ${arg[2]} = ${arg[1] - arg[2]}`); break ; case '/' : if (arg[2] == 0) { console.log( 'cannot be divided by zero!!' ); } else { console.log(`Result of ${arg[1]} / ${arg[2]} = ${arg[1] / arg[2]}`); } break ; case '%' : if (arg[2] == 0) { console.log( 'cannot be divided by zero!!' ); } else { console.log(`Result of ${arg[1]} % ${arg[2]} = ${arg[1] % arg[2]}`); } break ; default : console.log( `operation cannot be performed!!`); } |
Запустите файл arthimatic.js , передав следующие аргументы:
Выход:
Метод 2: Использование модуля yargs: передача аргументов через cmd становится утомительной, когда мы начинаем работать с флагами или если вашему серверу требуется много аргументов.
приложение -h хост -p порт -r -v -b --quiet -x -o outfile
Чтобы решить эту проблему, мы можем использовать третий библиотечный модуль, такой как yargs, для анализа аргументов, переданных через cmd . В этом модуле вы можете передавать аргументы в виде пары ключ-значение, а затем обращаться к ним с помощью ключа. .Argv получает аргументы как простой старый объект.
Установите модуль yargs, используя следующую команду:
npm install yargs --save
Пример: Имя файла: yarg.js
Javascript
const args = require( 'yargs' ).argv; console.log(args); console.log(`Language : ${args.language}`); console.log(`IDE : ${args.ide}`); |
Чтобы запустить файл, выполните следующую команду:
node yarg.js –language=javascript –ide=GFG_IDE command1 command2 –b –v
Выход:
Примечание:
- argv. $ 0 содержит имя файла сценария, который необходимо выполнить.
- argv._ - это массив, содержащий каждый элемент, не связанный с параметром (или флагом), эти элементы называются командами в yargs.
- Такие флаги, как argv.time, argv.b и т. Д., Становятся собственностью argv. Флаги должны передаваться как –flag. Пример: node app.js –b