Это краткое руководство о том, как выполнять команды оболочки/окна в приложении nodejs. Это может пригодиться, когда вы создаете CLI, который пытается установить зависимости на другом компьютере или запускает скрипты.

Ладно, хватит болтовни. Давайте начнем

Node.js следует однопоточной модели с циклом событий и имеет возможность выполнять асинхронные задачи, которые не обрабатываются основным потоком. Когда асинхронная задача будет завершена, вывод/ошибка вернется обратно в основной поток.

Node.js имеет модуль под названием child_process, который отвечает за создание нового дочернего процесса нашего основного процесса Node.js.

Две команды exec и spawn, которые являются методом дочернего процесса, который помогает выполнять команды оболочки.

Исполнительная функция:

Функция `exec()` создает новую оболочку и выполняет заданную команду. Результат выполнения будет доступен для использования в обратном вызове.

Теперь, если мы выполним это в нашем терминале, мы увидим следующий вывод

Теперь мы увидим, как выполнить команду оболочки с помощью spawn.

Функция спавна:

Он создает новый процесс с заданной командой с аргументами командной строки, присутствующими в args. Вывод команды доступен через прослушиватели. Главное в функции порождения — это использование потокового API, который больше подходит для обработки больших источников данных.

Давайте перечислим текущий рабочий каталог с функцией spawn.

Мы настраиваем прослушиватели в коде после импорта дочернего процесса. stdout и stderr запускают событие данных, когда команда записывает в поток. Ошибка будет выдана только в том случае, если не удалось выполнить дочерний_процесс.

Событие final close происходит, когда команда завершена.

Мы получим следующий вывод после запуска в терминале, который будет таким же, как вывод, который мы получили после запуска функции exec.

Спаун против Исполнителя:

Теперь, когда мы знаем об этих двух функциях, когда использовать spawn и когда использовать exec. Если мы ожидаем большой результат от команды, то лучше всего подойдет функция spawn. Наоборот, если мы не ожидаем большого вывода, мы можем использовать функцию exec.

Спасибо за чтение. Дайте мне знать ваши мысли в разделе комментариев.

Оставайтесь в безопасности и счастливого кодирования.