Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Аргументы командной строки

Аргументы командной строки — слова, которые вы пишете после имени файла при запуске: node app.js posts.json --short. Так программе сообщают, с чем работать, не меняя её код. Аргументы доступны через объект process — глобальный объект Node.js, который описывает запущенную программу. Импортировать его не нужно.

process.argv

Все аргументы лежат в массиве process.argv. Создайте файл app.js в корне проекта:

console.log(process.argv);

Запустите его с аргументами:

node app.js hello 42

В терминале появится массив из четырёх строк: путь к программе node, путь к файлу app.js, затем 'hello' и '42'.

Только свои аргументы

Первые два элемента нужны редко, поэтому их отрезают методом slice(2):

const args = process.argv.slice(2);
 
console.log(`Получено аргументов: ${args.length}`);
console.log(args);

node app.js hello 42 выведет «Получено аргументов: 2» и массив [ 'hello', '42' ]. Обратите внимание: 42 пришло строкой. Все аргументы — строки, числа получают через Number().

Значение по умолчанию

Аргумента может не быть. Запасное значение задают оператором ??:

const title = process.argv[2] ?? 'Без названия';
 
console.log(`Новая статья: ${title}`);

node app.js "Привет, Node.js" выведет «Новая статья: Привет, Node.js», а запуск без аргумента — «Новая статья: Без названия». Кавычки нужны, чтобы фраза с пробелами пришла одним аргументом.

Флаги

Аргументы, которые начинаются с --, принято называть флагами. Проверить, передан ли флаг, можно методом includes():

const args = process.argv.slice(2);
const isDraft = args.includes('--draft');
 
console.log(isDraft ? 'Сохраняем черновик' : 'Публикуем статью');

node app.js --draft выведет «Сохраняем черновик». Для флагов со значениями, вроде --limit 10, есть встроенная функция parseArgs — ей посвящён урок про утилиты командной строки.

Другие сведения о программе

СвойствоЧто содержит
process.argvАргументы запуска
process.versionВерсия Node.js, например v22.12.0
process.platformСистема: win32, linux, darwin
process.pidНомер процесса в системе
process.cwd()Папка, из которой запущена программа

Частая ошибка

Если взять process.argv[0] в надежде получить первый аргумент, вы получите путь к node:

const wrong = process.argv[0];
const right = process.argv[2];
 
console.log(wrong.includes('node'), right !== undefined);

Пользовательские аргументы начинаются с индекса 2. Чтобы не путаться, сразу пишите process.argv.slice(2).

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.