Как разобрать аргументы командной строки в node.js?

Опубликовано: 27 Июля, 2021

Аргументы командной строки - это строки текста, используемые для передачи дополнительной информации программе, когда приложение запускается через интерфейс командной строки (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

Выход:

Использование process.argv

Пример 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

Выход:

Использование модуля yargs

Примечание:

  • argv. $ 0 содержит имя файла сценария, который необходимо выполнить.
  • argv._ - это массив, содержащий каждый элемент, не связанный с параметром (или флагом), эти элементы называются командами в yargs.
  • Такие флаги, как argv.time, argv.b и т. Д., Становятся собственностью argv. Флаги должны передаваться как –flag. Пример: node app.js –b