Pull to refresh
89.57
Skillfactory
Онлайн-школа IT-профессий

NodeJS: 12 пакетов для продуктивности разработчика

Reading time6 min
Views7.1K
Original author: Indrek Lasn


Менеджер процессов для продакшна с балансировщиком нагрузки. Обёртки над отладкой и хуками 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 используете вы?

image

Получить востребованную профессию с нуля или Level Up по навыкам и зарплате, можно, пройдя онлайн-курсы SkillFactory:



Tags:
Hubs:
+10
Comments11

Articles

Information

Website
www.skillfactory.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Skillfactory School