19 пакетів Node.js, які варто знати розробнику JavaScript для продуктивного та легкого життя

Чи не надто багато часу ви витрачаєте на кодування на JavaScript? Далі ви знайдете інформацію про різноманітні пакети Node.js, які можуть зробити розробку на JavaScript більш ефективною та зручною.

JavaScript – це синхронна, однопотокова мова. Вона є однією з найбільш розповсюджених мов програмування для створення програмного забезпечення та застосунків. На базі JavaScript створено безліч фреймворків, таких як Reactjs, Angularjs, Vuejs, Expressjs та Node.js.

Багато розробників стикаються з труднощами під час написання коду на JavaScript через складні концепції, такі як проміси, цикл подій, колбеки, хойстинг, замикання та інше.

Для полегшення розробки на JavaScript існує велика кількість пакетів Node.js, які допомагають обробляти помилки, форматувати код, видаляти файли, налагоджувати код, забезпечувати безпеку та багато іншого. Деякі з них також надають інтерактивний інтерфейс командного рядка для кращого візуального представлення продуктивності процесора, обчислювальної потужності, серйозності помилок тощо.

Retire.js

Retire.js – це JavaScript-бібліотека, що містить список вразливостей, пов’язаних із різними версіями JavaScript-бібліотек.

Її можна використовувати як розширення для Chrome або Firefox, сканер командного рядка, плагін Grunt тощо. Встановлюється за допомогою команди:

$ npm install -g retire

Retire.js має різні команди для сканування JavaScript-файлів та вузлів. Він сканує вебсайти на JavaScript і виводить попередження в консоль розробника. Retire.js генерує код виходу 13 у разі виявлення вразливостей. Gulp task автоматично сканує файли та повідомляє про виявлені проблеми.

Np

Np – це JavaScript-пакет, який надає різноманітні функції, такі як очищення коду, встановлення залежностей, публікація пакетів, створення тегів тощо. Він забезпечує відправку коду в головну гілку та має інтерактивний користувацький інтерфейс.

Двофакторна автентифікація використовується для забезпечення безпеки нових репозиторіїв. Також гарантується робота з останньою версією шляхом перевстановлення залежностей. Остання версія переноситься до npm. Для встановлення використовується команда:

$ npm install --global np

Серед його функцій: публікація коду з будь-якої гілки, створення підкаталогів для публікації, пропуск очищення коду та тестування. Конфігурацію np можна здійснити глобально або локально через прапори CLI у файлах конфігурації np, таких як np-config.js та np-config.json.

ESLint

ESLint – це інструмент JavaScript-пакету, який аналізує код на JavaScript та виявляє шаблони в коді ECMA/JavaScript. Він оцінює шаблони в коді за допомогою AST. Усі правила інструменту визначено у вигляді плагінів, які можна динамічно додавати під час виконання. ESLint можна встановити за допомогою команди:

$ npm init @eslint/config

Після встановлення командою вище буде створено файл .eslintrc з набором правил та визначеннями помилок та їх умовами. ESLint дозволяє визначити всі залежності у файлі .lock користувача та не використовує власний файл .lock. Він також дуже безпечний.

Shelljs

Shelljs – це середовище, в якому команди UNIX можна виконувати в будь-якій операційній системі через API Node.js. Shelljs є портативним та підтримує сторонні плагіни. Можна використовувати команди: echo, exec, chmod, pushd, popd, cd, cat та інші. Для встановлення Shelljs використовується команда:

$ npm install [-g] shelljs

Він був протестований у різних проєктах, таких як Firefox, JSHint, ESLint, Zepto тощо. Локальний імпорт пакетів Shelljs має пріоритет над глобальним. Також його можна налаштувати як тихий, фатальний, багатослівний тощо.

Omelette

Omelette надає шаблон для автоматичного завершення коду для проєктів Node і Deno. Він використовує простий API, а також підтримує Async API та Tree API. Приклад коду для впровадження Omelette:

import * as omelette from 'omelette';

const firstArgument = ({ reply }) => {
  reply([ 'beautiful', 'cruel', 'far' ])
}

const planet = ({ reply }) => {
  reply([ 'world', 'mars', 'pluto' ])
}

omelette`hello|hi ${firstArgument} ${planet}`.init()

Після імпорту Omelette необхідно створити об’єкт Omelette. Після цього на об’єкті omelette можна викликати різні функції для автозавершення коду, як setupShellInitFile() для налаштування, cleanupShellInitFile() для очищення. Також підтримується використання лямбда-функцій для створення складних літеральних API шаблонів.

Prettier

Prettier використовується для форматування коду. Він допомагає у вирівнюванні відступів, відстежує максимальну довжину рядків та забезпечує правильний відступ в умовних операторах та циклах. Він перетворює код в охайний та читабельний формат. Наприклад:

Фрагмент коду:

foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());

Перетворюється на наступний, коли використовується Prettier:

foo(
  reallyLongArg(),
  omgSoManyParameters(),
  IShouldRefactorThis(),
  isThereSeriouslyAnotherOne()
);

Він може працювати в середовищах CI, інтегрованих середовищах розробки (IDE) тощо.

jscpd

jscpd – це сервіс технічного управління боргом. Це JavaScript-пакет, який допомагає знаходити повторювані фрагменти коду в різних кодах та цифрових документах. Для пошуку дублікатів коду використовує алгоритм зіставлення рядків Рабіна-Карпа.

jscpd/core вміє виявляти дублювання коду в різних середовищах, а jspd/tokenizer використовується для токенізації вихідного коду програми. Існує багато інших пакетів, таких як html-reporter, badge-reporter, leveldb-store тощо. Команда для встановлення jscpd:

$ npm install -g jscpd

jscpd використовується GitHub Super Linter, Code-Inspector, Mega-Linter, Codacy тощо. Кожен з них використовує jscpd для різних цілей: обробки природної мови, агрегаторів рядків, аналізу коду тощо.

Vtop

Vtop – це монітор, що надає графічне представлення активності командного рядка. Він надає інформацію про використання ЦП, аналізуючи різні потоки та процеси, що виконуються, та представляє їх у вигляді графіків, діаграм тощо. Він розроблений на JavaScript, Makefile та Shell. Команда для встановлення Vtop:

$ npm install -g vtop

Для покращення візуального представлення графічного інтерфейсу можна використовувати різні теми та кольорові коди. Можна використовувати комбінації клавіш, наприклад, “u” для оновлення, “g” для переходу до початку списку процесів, “G” – до кінця списку, “dd” – для завершення процесів, що належать до певної групи тощо.

Standardjs

Standardjs – це JavaScript-бібліотека, яка автоматизує налаштування файлів, форматує код та швидко виявляє проблеми обробки винятків програмістами. Команда для встановлення Standardjs:

$ npm install standard --global

Після встановлення його можна запустити над файлом/фрагментом коду за допомогою команди “standard” в інтерфейсі командного рядка. Усі залежності Standardjs можна додати, встановивши “standard”: “*” в об’єкті залежностей файлу package.json.

Його можна встановити як плагін для різних текстових редакторів, таких як Visual Studio Code, Sublime Text, Atom, Vim, Brackets та інших. Node.js, Expressjs, npm, Brave та GoDaddy використовують Standardjs для своїх бізнес-потреб.

NodeJsScan

NodeJsScan – це статичний сканер коду для безпеки програм Node.js. Він надає інформацію про стан безпеки програми через інтерактивний інтерфейс користувача. Його можна інтегрувати з різними сервісами, такими як Slack для сповіщень, повідомлень електронною поштою, налаштувавши параметри SMTP у файлі settings.py NodeJsScan, конвеєр CI/CD тощо. Також він допомагає створювати Docker-образи.

Він реєструє помилки, інформаційні повідомлення та попередження. Детальний опис помилки містить причину, серйозність, номери рядків, де виникла помилка, кількість перевірених файлів та виявлених проблем. Для кращого аналізу будуються графіки та діаграми.

Trash

Trash – це JavaScript-бібліотека, яка переміщує видалені файли до кошика, замість їх остаточного видалення. Підтримує Mac, Linux і Windows. Команда для встановлення trash:

$ npm install trash

Trash – це API, який приймає вхідні дані та параметри у вигляді аргументів функції під час виклику trash(). Вхідними даними може бути рядок або масив рядків. Опції можуть бути об’єктом. Функція trash повертає проміс. У різних операційних системах використовуються різні команди: macOS-trash для MacOs, XDG Spec для Linux та recycle-bin для Windows.

Xo

Xo – це оболонка для JavaScript та TypeScript, яка використовує ESLint. Він допомагає створювати читабельний код, додаючи відступи, крапки з комою, одинарні лапки, коми тощо. Багато плагінів ESLint, таких як unicorn, import, ava, n та інші, можна використовувати з Xo. Команда для встановлення Xo:

$ npm install xo --save-dev

Проблеми можна автоматично виправити командою $xo –fix. Xo можна налаштувати через властивість xo у файлі package.json. Він може бути встановлений як плагін для різних редакторів, таких як Vim, Visual Studio Code, Atom, Sublime Text, Emacs та інші.

diff2html

diff2html розшифровується як “парсер відмінностей та гарний генератор HTML”. Він виділяє зміни в коді поточної версії порівняно з попередньою. Допомагає розробникам легко визначати та розуміти внесені зміни. Для цього використовуються кольорові коди.

Зміни виділяються в рядках та поруч. Виділяються зміни синтаксису коду та групуються схожі рядки для легкого відстеження. Команда для встановлення diff2html:

$ npm install diff2html

Він інтегрований з командним рядком. Серед проєктів, які використовують diff2html: Jenkins, Codacy, Ungit, git-explorer, code-annotation та інші.

Chalk

Chalk – це модуль Node.js, який допомагає форматувати та стилізувати код. Він також допомагає створювати та додавати кольорові теми до тексту. Він має виразний API та чудову продуктивність. Він використовує стилі та не має залежностей. Використання Chalk можна побачити у фрагменті коду:

import chalk from 'chalk';

console.log(chalk.blue('Hello world!'));

chalk.level визначає кольори, які підтримуються на кожному рівні. “0” означає, що всі кольори вимкнені, “1” – підтримка базових кольорів, “2” – підтримка 256 кольорів, “3” – підтримка Truecolor. Модифікатори стилів для форматування тексту, що підтримуються chalk: інверсний, прихований, видимий, закреслений, напівжирний, скинути, курсив, підкреслений, накладений, затемнений тощо.

NpKill

Npkill – це інструмент, який видаляє старі та важкі папки node_modules. Він допомагає швидко видаляти модулі та звільняти місце в системі. Він розроблений з використанням TypeScript, JavaScript та Go. Не має залежностей і простий у використанні. Для встановлення Npkill використовується команда:

$ npm i -g npkill

Усі модулі node_modules, вказані у шляху, будуть видалені. Слід бути обережним при видаленні модулів, оскільки це незворотна дія. Якщо модулі будь-якого активного проєкту видаляються, файли пошкоджуються і модулі потрібно встановити знову.

fkill-cli

fkill-cli – це інтерактивний інструмент командного рядка з відкритим вихідним кодом, що завершує процеси та порти Linux. Він розроблений на Node.js. Він простий, безкоштовний, безпечний та сумісний з різними платформами. Він працює на Windows, Linux і macOS. Для встановлення fkill-cli використовується команда:

$ npm install --global fkill-cli

Для завершення процесу необхідні ім’я та ідентифікатор процесу. Параметр “-f” виконує операцію примусово, а команда “-v” відображає аргументи процесу. API fkill приймає вхідні дані та параметри як аргументи та повертає об’єкт promise. Деякі параметри: force, silent, ignoreCase, tree та forceAfterTimeout.

Localtunnel

Localtunnel – це платформа, що дозволяє обмінюватися веб-сервісами із зовнішнього середовища з локальним комп’ютером, не змінюючи налаштування DNS та брандмауера.

Запити проксуються Localtunnel та передаються на локально розгорнутий сервер після отримання загальнодоступної URL-адреси. Для встановлення Localtunnel використовується команда:

$ npm install -g localtunnel

Він є безпечним і використовує HTTPS. API можна використовувати для тестування вебхуків. Інтерфейс користувача можна тестувати в хмарних браузерах за допомогою Localtunnel.

Inquirer.js

Inquirer.js – це інтерактивний інтерфейс командного рядка для програм Node.js. Він полегшує процес виявлення помилок, аналізу введених даних, перевірки відповідей та управління ієрархічними запитами. Він використовує власні модулі ESM для реалізації своїх функцій. Для встановлення Inquirer.js використовується команда:

$ npm install --save inquirer

Використовуються різні методи: prompt, registerPrompt, createPromptModule та інші. prompt() – це функція, яка приймає питання та відповідь як вхідні дані та повертає проміс при виклику.

Question – це об’єкт, що є хешованою версією значень, пов’язаних із запитанням, наприклад: тип, повідомлення, значення за замовчуванням, вибір, фільтр тощо. Пара об’єктів “ключ-значення” містить хешовану версію відповідей клієнта. Ключем є властивість question, а значення може містити підтвердження, введення, число, список тощо.

http-сервер

http-сервер – це статичний http-сервер командного рядка. Він простий і не потребує налаштування. Він складається з двох файлів: index.html і 404.html. index.html – це файл за замовчуванням, який відображається при запитах. 404.html відображається, коли файл не знайдено. Команда для встановлення http-сервера:

$ npm install --global http-server

Він розроблений за допомогою HTML та JavaScript. Він забезпечує безпеку за допомогою сертифікатів TLS/SSL. Він використовує алгоритм RSA для шифрування та дешифрування ключів. Також можна визначити парольну фразу та закритий ключ для підвищення безпеки.

Висновок

JavaScript є однією з найпоширеніших мов програмування для розробки програмного забезпечення. Для спрощення життя розробників було розроблено багато пакетів Node.js.

Пакети Node.js, такі як Retire.js, Localtunnel, Xo, Inquirer.js, Shelljs, fpkill, NodeJsScan, Prettier та інші, можна використовувати для форматування коду, забезпечення безпеки, виділення змін коду, видалення важких і непотрібних модулів, тощо. Це допомагає розробникам ефективно налагоджувати, писати та керувати своїм кодом.

Також ви можете прочитати про те, як встановити Node.js та NPM на Windows та macOS.