Аргументы командной строки
Аргументы командной строки — слова, которые вы пишете после имени файла при запуске: 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).