Источник: Nuances of Programming
Вся основная сила Javascript заключается в бесчисленном множестве потрясающих пакетов, находящихся в открытом доступе. Главное, не забывать хотя бы иногда благодарить их создателей вознаграждением. Ведь разработчики, как все люди, платят налоги и покупают продукты.
Знакомьтесь: 7 классных пакетов, которые вы можете начать использовать уже сегодня.
Commander.js
Commander выступает как полноценное решение для интерфейсов командной строки node.js, вдохновленное приложением commander на Ruby.
Установка
npm install commander
Определение программных переменных
Commander экспортирует глобальный объект, что весьма удобно для небольших быстрых программ.
const program = require('commander');
program.version('0.0.1');
Для более объемных программ, способных использовать commander в различных задачах, включая тестирование, рекомендуется создавать локальный объект Command.
const commander = require('commander');
const program = new commander.Command();
program.version('0.0.1');
Команды
Вы можете задавать подкоманды для команды высшего уровня при помощи .command. Это можно сделать двумя способами: с помощью обработчика действий, привязанного к команде или в виде отдельного исполняемого файла (описание см. ниже). В первом случае к .command вы добавляете имя команды и необходимые аргументы. Этими аргументами могут быть <required>, <optional> или variadic.
Например:
Для полного ознакомления можете изучить прилагаемое официальное руководство.
Passport
Passport является межплатформенным Express-совместимым авторизационным ПО для Node.js.
Единственная задача Passport — аутентификация запросов, которая осуществляется посредством расширяемого набора плагинов, называемых стратегиями. Passport не прописывает никаких маршрутов или схем баз данных, что максимально увеличивает его гибкость и позволяет разработчику производить настройки на уровне приложений. Интерфейс программирования в этом случае прост: вы запрашиваете у Passport аутентификацию запроса, а он в свою очередь определяет для этого запроса перехватчики, которые отслеживают успех или провал этой аутентификации.
Установка
$ npm install passport
Пользовательские стратегии
Для аутентификации запросов Passport использует такое понятие, как стратегии. Стратегии могут включать проверку имени пользователя и пароля, делегированную аутентификацию при помощи OAuth или федеративную аутентификацию посредством OpenID.
Любая из предполагаемых стратегий нуждается в предварительной настройке.
Всего существует более 480 различных стратегий, которые вы можете подробно изучить и использовать на passportjs.org.
Сессии
Passport способен поддерживать устойчивые сессии. Для этого авторизованный пользователь должен быть сериализован в сессии и десериализован, как только будут выполнены необходимые запросы.
Passport не накладывает никаких ограничений на способы хранения пользовательских записей. Вместо этого вы определяете его функции так, что он в последствии производит необходимый логический процесс сериализации и десериализации. В типичном приложении это будет так же просто, как сериализация пользовательского ID с последующим нахождением пользователя по этому ID при десериализации.
Посетите официальный сайт Passport для более детального ознакомления с проектом.
Chalk
Chalk применяется для стилизации терминалов.
Включает в себя следующие особенности:
- Выразительный API;
- Высокая производительность;
- Возможность вкладывать стили друг в друга;
- Авто-определение поддержки цветов;
- Не расширяет String.prototype;
- Чистый и сфокусированный;
- Активно поддерживаемый;
Установка
$ npm install chalk
Использование
const chalk = require('chalk');console.log(chalk.blue('Hello world!'));
Chalk оснащен удобным API, в котором вы можете связывать и вкладывать желаемые стили.
term-size
Пакет Term-size помогает достоверно выяснить размер окна терминала.
Process.stdout.columns не существует в случае, когда запущен неинтерактивно. Например в придаточных процессах или в конвейерной цепочке. Этот модуль работает, даже когда все файловые дескрипторы телетайпа переадресованы.
Установка
$ npm install term-size
Использование
const termSize = require('term-size');termSize();
//=> {колонки: 143, ряды: 24}
Term size имеет краткий и приятный API
termSize() — возвращает объект со свойствами колонок и рядов.
Дополнительно
- term-size-cli — CLI для этого модуля.
Имейте в виду, что этот пакет работает на macOS, Linux и Windows.
Nodemailer
Nodemailer — модуль, разработанный для приложений Node.js, который позволяет очень легко отправлять e-mail. Этот проект был начат в 2010, когда еще не было удобного способа отправки таких сообщений. Сегодня же это одно из решений, которое пользователи Node.js применяют по умолчанию.
Nodemailer имеет лицензию MIT, которую подробно можно изучить на ее странице. Если вы производите апгрейд с версии v2 или более старой, то обратитесь к руководству по облегченной установке здесь.
Установка
npm install nodemailer
Демонстрационный код Nodemailer
Здесь представлен полноценный образец отправки e-mail с простым текстом и HTML телом.
Примеры
- Nodemailer AMQP является примером использования RabbitMQ для управления e-mail сообщениями Nodemailer. Источник.
Так выглядит вывод примера скрипта, отображенный службой перехвата сообщений Ethereal:
Node MySQL
Node MySQL — драйвер node.js, предназначенный для MySQL. Он написан на JavaScript, не требует компиляции и имеет 100% лицензию MIT.
Установка
Этот Node.js модуль доступен через реестр npm.
Перед его установкой необходимо скачать и установить Node.js версии 6.0 или более поздней.
Далее процесс установки запускается командой npm install:
$ npm install mysql
Информацию о предыдущих релизах версий 0.9.х вы можете получить в разделе v.0.9.
Иногда пакет требует установить последнюю версию с Github для проверки работоспособности программных исправлений. Это можно сделать следующим образом:
$ npm install mysqljs/mysql
Установка соединений
Ниже указан рекомендованный способ установки соединения с базой данных:
Пример кода
Здесь приведен пример использования пакета:
В этом примере указано следующее:
- Каждый метод, применяемый к соединению, определяется в очередь и выполняется согласно ей.
- Завершение соединения производится через команду end(), которая следит, чтобы все оставшиеся запросы были выполнены до отправки завершающего пакета на сервер MySQL.
Для полноценного изучения темы посетите официальный репозиторий на Github.
winston
Пакет winston был разработан как простая и универсальная библиотека логирования с поддержкой множества транспортов. В данном случае они в большей степени выступают в качестве хранилища ваших логов.
Каждый логгер winston имеет возможность настраивать эти средства на различных уровнях. Например, вы можете хранить логи ошибок в определенной удаленной единице (базе данных, к примеру), но в то же время все логи выводить на консоль или в локальный файл.
winston разъединяет части процесса логирования, делая его более гибким и расширяемым. Существенное внимание уделено поддержке гибкости уровней, процесса форматирования логов, а также обеспечению того, что API, отделенные от реализации транспортного логирования (имеется в виду процесс хранения и индексирования логов), будут представлены программисту.
Установка
npm i winston
Использование
Для использования winston рекомендуется создать свой собственный логгер. Проще всего сделать это через команду winston.createLogger:
Вы также можете логировать напрямую через встроенный логгер, отображаемый вводом require('winston'), но этот способ не очень удобный.
Здесь доступна подробная документация по API.
Заключение
Надеюсь вы нашли хотя бы один полезный пакет Node для применения в одном из текущих или будущих проектов.
Еще раз хочу призвать вас не забывать о спонсорской поддержке авторов таких замечательных пакетов. Эти люди действительно многое делают бесплатно и отдают часть себя миру. Давайте ответим им взаимностью.
Читайте также:
Читайте нас в телеграмме и vk
Перевод статьи Indrek Lasn: Here Are 7 Useful Node Packages (Open Source and Free to Use!)