Оптимизация проектов на NodeJS

Konstantin
Konstantin Ostrovsky
2018-10-02 11:46:45
14

Нередко Вы сталкиваетесь с рутинными процессами в NodeJS. Такими как необходимости постоянной сборки актуальной версии dist или поддержка работоспособности приложения на сервере. Я расскажу как облегчить и улучшить Ваше NodeJS - приложение.

В этой статье я собрал список модулей, которые направлены ускорить и оптимизировать Вашу работу с NodeJS. В примерах я буду использовать менеджер пакетов yarn. Если Вы знакомы с npm, то для Вас не должно составить сложности при выполнении этих команд через npm. 

Npx

Npx - модуль, который необходимо устанавливать в глобальные зависимости. Если Вы использовали такие пакеты как gulp,  vue-cli, react-create-app и подобные, то уже знаете что некоторые модули необходимо устанавливать глобально для того что бы удобно использовать их из консоли. Установка модулей глобально - это не безопасно. Как известно, для глобальной установки модулей необходимо предоставить права sudo, это требуется для того что бы разместить link в папке ~/usr/bin. Доступ к этой папке есть только у super-пользователя, что само-собой наталкивает на мысль что в этой папке хранятся приватные данные. Что бы избежать этого и был написан модуль npx. Основная его цель - запуск модулей из папки node_modules Вашего проекта. С npx у Вас больше нет необходимости глобально устанавливать модули. Достаточно установить их в зависимости проекта.

Пример:

yarn add webpack
npx webpack

Вместо:

sudo yarn global webpack
webpack

 

Webpack Bundle Analyzer

Скорее всего Вы уже сталкивались с тем, что при разработке с использованием сборщика webpack ваш bundle превышал ожидаемые размеры. Это нормальная практика, так как в bundle могут попасть лишние модули или зависимости. Для выявления потенциально-больших файлов в конечном bundle можно использовать пакет webpack-bundle-analyzer. Подробная инструкция по установке доступна по ссылке.  Пакет предоставляет наглядную treemap, где можно увидеть пакеты, содержащиеся в конечном bundle и анализировать их размер. 

Пример:


 

PM2

Золотой грааль этой коллекции. Без преувеличения, самый необходимый для стабильной работы на production пакет. PM2 - это производственный Runtime и Process Manager для приложений Node.js со встроенным балансировщиком нагрузки. Это позволяет вам сохранять приложения навсегда, перезагружать их без простоя и облегчать общие задачи Devops. Если говорить простыми словами: PM2 - это пакет, обеспечивающий стабильную работу Вашего приложения на стороне сервера. Принцип работы PM2 заключается в следующем: при первом обращени к PM2 будет запущен фоновый процесс, который будет служить балансировщиком Ваших приложений. Все приложения, запущенные через PM2 создаются  дочерними процессами к главному процессу. PM2 следит за работой Вашего скрипта и в случае ошибки выполняет автоматический перезапуск.

Я не считаю рациональным рассмотрение таких пакетов как forever и nodemon, так как PM2 их превосходно заменяет и имеет преимущество в удобстве и надежности.
Умеет выполнять как файлы, так и определенные команды. Имеет отличный интерфейс в терминале, быстрый доступ к логам приложения и статистику по работе приложения.

Команды, которые Вам точно пригодятся:

$ pm2 start <*.js file path> #выполнение nodeJS файла
$ pm2 start --name "<name>" yarn -- start #выполнение команды, где аргументы передаются после "--"
$ pm2 restart <process id/name> #перезапуск процесса
$ pm2 stop <process id/name> #остановка процесса
$ pm2 start <process id/name> #запуск процесса
$ pm2 list #список процессов с статистикой
$ pm2 monit #запуск монитора для runtime-дебага приложений
$ pm2 describe <process id/name> #поднробная информация о процессе
$ pm2 reload all #перезагрузка всех процессов
$ pm2 logs <process id/name> #логи процесса

 

Yarn

Yarn - замена стандартному npm, как считают многие, но это вовсе не так. Yarn - это npm-пакет обеспечивающий более стабильную и может для кого-то даже более удобную работу пакетным менеджером. Yarn создан такими гагантами как Facebook, Google, Exponent и Tilde. Его целью является решение целого ряда проблем, с которыми столкнулись разработчики при использовании npm, а именно:

 

  • установка пакетов не была достаточно быстрой и последовательной;
  • существовали проблемы с безопасностью, так как npm позволяет пакетам запускать код при установке;
  • людям не хватало веселых emoji во время работы с терминалом.

Yarn работает с пакетами npm, просто делает это лучше. Если Вы знаете npm - освоить yarn не составит труда. Более подробно о работе с yarn и его плюсах и минусах советую прочитать здесь. Сравнение производительности npm и yarn: