[Перевод] NodeJS: 12 пакетов для продуктивности разработчика
Менеджер процессов для продакшна с балансировщиком нагрузки. Обёртки над отладкой и хуками Git, защита express-приложений через HTTP-заголовки, утилита в более чем 180 функциями для работы с датами и другие инструменты, которые сэкономят ваше время. Подборка особенно полезна начинающим разработчикам NodeJS, но может порадовать опытных скептиков.
Всякий раз, когда вам нужно решить проблему с кодом, есть вероятность, что пакет для решения вашей проблемы уже существует. Вот список пакетов, о которых, я думаю, должен знать каждый разработчик. Рассматривайте эти npm-пакеты как то, что сэкономит ваше время.
1. Husky
Husky упрощает реализацию хуков в Git. Она позволяет требовать, чтобы все автоматически линтовали и тестировали код перед коммитом или отправкой в репозиторий.
Исходники husky
Установка
yarn add husky
Применение
Пример хуков с husky
:
// package.json
{
"husky": {
"hooks": {
"pre-commit": "npm lint",
"pre-push": "npm test"
}
}
}
pre-commit
запускается перед коммитом.pre-push
перед отправкой в репозиторий.
2. Dotenv
Dotenv — модуль без зависимостей. Он загружает переменные среды из файла .env
в process.env. Хранение конфигурации в среде отдельно от кода основано на методологии приложения двенадцати факторов. Исходники dotenv.
Установка
yarn add dotenv
Применение
Как можно раньше в вашем приложении пропишите require
и установите значения dotenv
:
require('dotenv').config()
Создайте .env
файл в корневом каталоге вашего проекта. Добавьте переменные среды в новые строки в виде NAME=VALUE
. Например:
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
Теперь process.env
содержит ключи и значения из файла .env
:
const db = require('db')
db.connect({ host: process.env.DB_HOST, username: process.env.DB_USER, password: process.env.DB_PASS})
3. date-fns
Date-fns похож на lodash, но создан для работы с датами. Предоставляет полный, но простой и последовательный набор инструментов манипуляций с датами JavaScript в браузере и Node.JS.
Исходники date-fns
Установка
yarn add date-fns
Применение
Пример с date-fns:
import { compareAsc, format } from 'date-fns'
format(new Date(2014, 1, 11), 'yyyy-MM-dd')
//=> '2014-02-11'
const dates = [
new Date(1995, 6, 2),
new Date(1987, 1, 11),
new Date(1989, 6, 10),
]
dates.sort(compareAsc)
//=> [
// Wed Feb 11 1987 00:00:00,
// Mon Jul 10 1989 00:00:00,
// Sun Jul 02 1995 00:00:00
// ]
Документация с примерами и вариантами использования.
4. Bunyan
Bunyan — это простая в использовании и производительная библиотека логирования JSON для Node.
Исходники bunyan
Установка
yarn add bunyan
Обратите внимание: CLI bunyan
написан так, чтобы быть совместимым (в пределах разумного) со всеми версиями логов Bunyan. Поэтому вы можете установить его глобально: yarn add global bunyan
, чтобы получить этот инструмент в PATH
, а затем использовать локальные установки Bunyan для приложений.
Применение
Bunyan — это простая и быстрая библиотека ведения журнала JSON для сервисов Node.js.
// hi.jsconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});
log.info("hi");
Вот что возвращается на консоль, если вы запускаете node hi.js
.
5. Ramda
Ramda — это практичная и полезная библиотека в функциональном стиле. Она подчеркивает чистый функциональный стиль. Неизменность и свободные от побочных эффектов функции лежат в основе философии дизайна Ramda. Такой подход может помочь вам писать простой, элегантный код.
Исходники ramda
Установка
yarn add ramda
Применение
import * as R from 'ramda'
const greet = R.replace('{name}', R.__, 'Hello, {name}!');
greet('Alice'); //=> 'Hello, Alice!'
Примеры кода
6. Debug
Debug — это крошечная утилита отладки JavaScript, смоделированная по образцу техники отладки Node.JS.
Исходники Debug
Установка
yarn add debug
Применение
Debug предоставляет функцию. Просто передайте этой функции имя вашего модуля, и она вернёт декорированную версию console.error
для передачи отладочных операторов.
const debug = require('debug');
const log = debug('http:server');
const http = require('http');
const name = 'My App name';
log('booting %o', name);
http.createServer((req, res) => {
log(req.method + ' ' + req.url);
res.end('debug examplen');
}).listen(3200, () => {
log('listening');
});
// выполните в терминале
// DEBUG=http:server node app.js
Позволяет показывать и прятать выходные данные отладки для модуля в целом или его частей.
7. Flat
Flat принимает объект и делает его плоским. Можно также свернуть объект, разделённый ключами. [Прим. перев. — разделиелем может быть не только точка].
Исходники Flat
Установка
yarn add flat
Применение
const flatten = require('flat')
flatten({
key1: {
keyA: 'valueI'
},
key2: {
keyB: 'valueII'
},
key3: { a: { b: { c: 2 } } }
})
// {
// 'key1.keyA': 'valueI',
// 'key2.keyB': 'valueII',
// 'key3.a.b.c': 2
// }
8. JSON5
Формат обмена данными JSON5 — это надмножество JSON, целью которого является смягчение некоторых ограничений JSON путём расширения его синтаксиса для включения некоторых возможностей ECMAScript 5.1.
Исходники JSON5
Установка
yarn add json5
const JSON5 = require('json5')
Применение
Обратите внимание на расширение файла. JSON5 — это надмножество, расширение JSON.
{
// комментарии
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \
No \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
}
9. ESLint
ESLint — это замечательный инструмент, чтобы избегать ошибок и установить стандарты кодирования командам разработчиков. ESLint — инструментом для выявления и представления закономерностей, обнаруженных в коде ECMAScript/JavaScript.
Исходники ESLint
Установка и применение
yarn add eslint
Затем настройте конфигурационный файл:
./node_modules/.bin/eslint --init
После этого можно запускать ESLint в любом файле или каталоге, например:
./node_modules/.bin/eslint yourfile.js
Документация со множеством примеров по началу работы и настройке.
10. PM2
PM2 — это менеджер процессов для продакшна со встроенным балансировщиком нагрузки. Он позволяет вам сохранять приложения постоянно работоспособными, перезагружать их без простоев и облегчать общие задачи системного администрирования.
Исходники pm2
Установка
yarn add global pm2
Запуск приложения
Вы можете запустить любое приложение (Node.js, Python, Ruby, бинарные файлы в $PATH
и так далее) вот так:
pm2 start app.js
Теперь ваше приложение выполняется под контролем демона, непрерывно контролируется и поддерживается. Подробнее об управлении процессами, быстрый старт.
А вот как вы можете вывести список всех запущенных приложений:
pm2 ls
Ознакомьтесь с официальной документацией, чтобы узнать полный список функций и возможностей.
11. Helmet
Helmet помогает защитить приложения express через HTTP-заголовки. Это не серебряная пуля, но она может помочь.
Исходники Helmet
Установка
yarn add helmet
Применение
Helmet
написан в стиле Connect и совместим с фреймворками, похожими на Express. Если нужна поддержка Koa, смотрите koa-helmet
.)
const express = require("express");
const helmet = require("helmet");
const app = express();
app.use(helmet());
Функция helmet — это оболочка вокруг 11 меньших промежуточных программ. Другими словами эквивалентно
// Это...
app.use(helmet());
// ...И это:
app.use(helmet.contentSecurityPolicy());
app.use(helmet.dnsPrefetchControl());
app.use(helmet.expectCt());
app.use(helmet.frameguard());
app.use(helmet.hidePoweredBy());
app.use(helmet.hsts());
app.use(helmet.ieNoOpen());
app.use(helmet.noSniff());
app.use(helmet.permittedCrossDomainPolicies());
app.use(helmet.referrerPolicy());
app.use(helmet.xssFilter());
12. Compression
Compression — инструмент для сжатия данных.
Исходники compression
Установка
yarn add compression
Применение
При использовании этого модуля вместе с express или connect
просто вызовите compression()
в промежуточном ПО. Запросы, проходящие через промежуточное ПО, будут сжаты.
const compression = require('compression')
const express = require('express')
const app = express()
// сжимать все запросы
app.use(compression())// ...
А какие инструменты в работе с NodeJS используете вы?
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя онлайн-курсы SkillFactory:Eще курсы