Как прочитать аргументы командной строки в Node.js
Короткий ответ
process.argv — массив: путь к node, путь к скрипту, а затем ваши аргументы. Пропустите первые два. Для команды node app.js input.txt:
const args = process.argv.slice(2);
console.log(args);
console.log('file:', args[0]);Результат:
[ 'input.txt' ]
file: input.txtОпции
parseArgs() из node:util понимает опции вида --verbose и --out=report.txt:
import { parseArgs } from 'node:util';
const { values, positionals } = parseArgs({
args: ['input.txt', '--out=report.txt', '--verbose'],
options: {
out: { type: 'string', default: 'result.txt' },
verbose: { type: 'boolean', short: 'v' },
},
allowPositionals: true,
});
console.log(positionals, values.out, values.verbose);Результат:
[ 'input.txt' ] report.txt trueБез параметра args parseArgs() читает настоящий process.argv. Здесь аргументы переданы явно, чтобы показать результат.
Частая ошибка
Все аргументы — строки, даже числа. А если пользователь не передал аргумент, он равен undefined, поэтому проверяйте его:
const count = process.argv[3];
if (count === undefined) {
console.log('Usage: node app.js <file> <count>');
} else {
console.log(Number(count) + 1);
}Результат:
Usage: node app.js <file> <count>Функции из этого ответа
- Array.prototype.slice — Возвращает часть массива.