Обычный способ запустить программу на Node.js — выполнить глобально доступную команду node (после установки Node.js) и передать ей имя файла, который нужно выполнить.
Если главный файл вашего приложения на Node.js называется app.js, вы можете вызвать его, набрав:
node app.jsВыше вы явно говорите шеллу запустить ваш скрипт с помощью node. Эту информацию можно встроить и в сам JavaScript-файл строкой «shebang». «Shebang» — это первая строка файла, которая сообщает ОС, какой интерпретатор использовать для запуска скрипта. Ниже — первая строка JavaScript:
#!/usr/bin/nodeВыше мы явно указываем абсолютный путь к интерпретатору. Не во всех операционных системах node лежит в папке bin, но env должен быть везде. Можно сказать ОС запустить env с параметром node:
#!/usr/bin/env node
// ваш javascript-кодЧтобы использовать shebang, у файла должны быть права на исполнение. Дать app.js право на исполнение можно командой:
chmod u+x app.jsЗапуская команду, убедитесь, что вы находитесь в той же директории, где лежит файл app.js.
Чтобы выполнить строку как аргумент, можно использовать -e, --eval "script". Он вычисляет следующий аргумент как JavaScript. Модули, предопределённые в REPL, тоже можно использовать в скрипте.
В Windows при использовании cmd.exe одинарные кавычки будут работать некорректно, потому что он распознаёт для кавычек только двойные ". В Powershell или Git bash можно использовать и ', и ".
node -e "console.log(123)"Начиная с Node.js v16 есть встроенная опция автоматического перезапуска приложения при изменении файла. Это удобно при разработке.
Чтобы воспользоваться этой возможностью, нужно передать Node.js флаг --watch.
node --watch app.jsТогда при изменении файла приложение будет перезапускаться автоматически.
См. документацию по флагу --watch.
Node.js предоставляет встроенный запускатель задач (task runner), позволяющий выполнять определённые команды, описанные в вашем файле package.json. Это особенно полезно для автоматизации рутинных задач — запуска тестов, сборки проекта или линтинга кода.
Флаг --run позволяет запустить указанную команду из секции scripts вашего файла package.json. Например, если у вас такой package.json:
{
"type": "module",
"scripts": {
"start": "node app.js",
"test": "node --test"
}
}Вы можете запустить скрипт test с помощью флага --run:
node --run testСинтаксисом -- --another-argument можно передавать аргументы в нижележащий скрипт. Например, если вы хотите передать аргумент --port в скрипт start:
node --run start -- --port 8080Это запустит скрипт start и допишет --port 8080 к выполнению команды, что эквивалентно запуску node app.js --port 8080.
Примечание: аргументы, переданные после
--, пробрасываются в скрипт и не интерпретируются как CLI-флаги Node.js. Например,--watch, переданный таким образом, не поведёт себя какnode --watch app.js.
Флаг --run устанавливает определённые переменные окружения, которые могут пригодиться в ваших скриптах:
NODE_RUN_SCRIPT_NAME: имя запускаемого скрипта.NODE_RUN_PACKAGE_JSON_PATH: путь к обрабатываемому файлуpackage.json.
Запускатель задач Node.js намеренно более ограничен по сравнению с другими запускателями вроде npm run или yarn run. Он делает упор на производительность и простоту, опуская такие возможности, как запуск pre- или post-скриптов. Это делает его подходящим для простых задач, но он может покрывать не все сценарии.