19 pakietów Node.js, które warto znać jako programista JavaScript dla produktywnego i łatwego życia

Czy zdarza Ci się spędzać za dużo czasu na kodowaniu w JavaScript? Przeczytaj ten artykuł, aby dowiedzieć się o różnorodnych pakietach Node.js, które mogą znacząco podnieść produktywność i ułatwić pracę programisty JavaScript.

JavaScript, znany ze swojej synchronicznej i jednowątkowej natury, jest jednym z najpopularniejszych języków programowania, wykorzystywanym do tworzenia różnorodnych aplikacji i oprogramowania. Wiele popularnych frameworków, takich jak React, Angular, Vue, Express oraz Node.js, bazuje na nim jako swoim podstawowym języku.

Wielu programistów spotyka się z trudnościami podczas programowania w JavaScript ze względu na jego złożone koncepcje, takie jak obietnice, pętla zdarzeń, funkcje zwrotne, hoisting czy domknięcia.

Aby uczynić programowanie w JavaScript bardziej przystępnym, dostępnych jest wiele pakietów Node.js, które oferują wsparcie w obsłudze błędów, formatowaniu kodu, usuwaniu plików, debugowaniu, zapewnianiu bezpieczeństwa i wielu innych aspektach. Niektóre z nich oferują również interaktywne interfejsy użytkownika w konsoli, które wizualizują wykorzystanie mocy procesora, zdolności obliczeniowe, wagę błędów itp.

Retire.js

Retire.js to biblioteka JavaScript, która zawiera aktualną listę luk w zabezpieczeniach powiązanych z różnymi wersjami bibliotek JavaScript.

Można ją stosować jako rozszerzenie przeglądarki Chrome lub Firefox, jako skaner wiersza poleceń, wtyczkę do Grunt i wielu innych narzędzi. Instaluje się ją za pomocą polecenia:

$ npm install -g retire

Retire.js zawiera rozmaite polecenia do analizy plików JavaScript i węzłów. Przeszukuje strony internetowe oparte na JavaScript i rejestruje ostrzeżenia w konsoli deweloperskiej. W przypadku wykrycia luk w zabezpieczeniach, Retire.js generuje kod zakończenia 13. Z wykorzystaniem zadania Gulp, pliki są skanowane automatycznie, a wykryte podatności są zgłaszane.

Np

Np jest pakietem JavaScript oferującym funkcje takie jak porządkowanie kodu, instalowanie zależności, publikowanie pakietów i tagów. Zapewnia, że kod jest umieszczany w gałęzi master, oferując jednocześnie interaktywny interfejs użytkownika.

Dla bezpieczeństwa nowych repozytoriów stosuje się uwierzytelnianie dwuskładnikowe. Gwarantuje on, że operacje są przeprowadzane na najnowszej wersji, poprzez ponowną instalację zależności. Aktualna wersja jest przesyłana do npm. Można go zainstalować za pomocą:

$ npm install --global np

Jego funkcje obejmują m.in. publikowanie kodu z dowolnej gałęzi, tworzenie podkatalogów do publikacji, pomijanie czyszczenia i testowania kodu. Konfiguracja np może być dokonywana zarówno globalnie, jak i lokalnie, za pomocą flag CLI w plikach konfiguracyjnych np, takich jak np-config.js i np-config.json.

ESLint

ESLint to narzędzie do analizy kodu JavaScript, które identyfikuje wzorce w kodzie ECMA/JavaScript. Analizuje on wzorce w kodzie z wykorzystaniem AST. Wszystkie reguły narzędzia są definiowane jako wtyczki i mogą być dynamicznie dodawane w trakcie wykonywania. Instalacja ESLint odbywa się za pomocą polecenia:

$ npm init @eslint/config

Po instalacji generowany jest plik .eslintrc z zestawem reguł, definicjami błędów i warunkami, które je wywołują. ESLint umożliwia zdefiniowanie wszystkich zależności w pliku .lock użytkownika, nie używając własnego. Zapewnia również wysoki poziom bezpieczeństwa.

Shelljs

Shelljs to środowisko, w którym polecenia UNIX mogą być wykonywane w każdym systemie operacyjnym za pośrednictwem API Node.js. Shelljs jest przenośny i obsługuje też wtyczki firm trzecich. Dostępne polecenia to np. echo, exec, chmod, pushd, popd, cd, cat. Do instalacji Shelljs służy polecenie:

$ npm install [-g] shelljs

Został przetestowany w projektach takich jak Firefox, JSHint, ESLint, Zepto. Preferowany jest lokalny import pakietów Shelljs zamiast globalnego. Może być też skonfigurowany jako cichy, krytyczny, gadatliwy itp.

Omlet

Omelette udostępnia szablony do automatycznego uzupełniania kodu dla projektów Node i Deno. Oferuje łatwe w obsłudze API i obsługuje również Async API oraz Tree API. Poniżej przedstawiono przykład implementacji Omleta:

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()

Po zaimportowaniu omleta, trzeba utworzyć jego obiekt. Następnie na obiekcie omleta można wywoływać różne funkcje, np. setupShellInitFile() do konfiguracji i cleanupShellInitFile() do czyszczenia w celu automatycznego uzupełniania kodu. Obsługuje również użycie funkcji Lambda do tworzenia zaawansowanych API literałów szablonowych.

Prettier

Prettier służy do formatowania kodu. Automatyzuje dodawanie spacji, tabulacji, pilnuje maksymalnej długości wiersza, a także zapewnia poprawne wcięcia w instrukcjach warunkowych i pętlach. Konwertuje kod na bardziej przejrzysty format. Przykładowo:

Kod:

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

Po użyciu Prettier, kod zostanie przekonwertowany na:

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

Prettier może być używany w środowiskach CI, zintegrowanych środowiskach programistycznych (IDE) i innych.

jscpd

jscpd to usługa do zarządzania długiem technicznym. Jest to pakiet JavaScript, który ułatwia wyszukiwanie zduplikowanych fragmentów kodu w różnych projektach i dokumentach. Wykorzystuje algorytm dopasowywania ciągów Rabin-Karp do znajdowania duplikatów.

jscpd/core umożliwia wykrywanie duplikatów kodu w różnych środowiskach, natomiast jspd/tokenizer służy do tokenizacji kodu źródłowego. Dostępne są również inne pakiety takie jak html-reporter, badge-reporter, leveldb-store. Instalacja jscpd odbywa się przez polecenie:

$ npm install -g jscpd

jscpd jest wykorzystywany m.in. przez GitHub Super Linter, Code-Inspector, Mega-Linter i Codacy. Każdy z nich używa jscpd w innym celu, np. do przetwarzania języka naturalnego, agregatorów linii, analizy kodu.

Vtop

Vtop to monitor, który prezentuje graficzną reprezentację aktywności w wierszu poleceń. Dostarcza informacji o wykorzystaniu procesora, analizując różne działające wątki i procesy, a następnie przedstawiając je graficznie za pomocą wykresów. Został opracowany przy użyciu JavaScript, Makefile i Shell. Instalacja Vtop odbywa się za pomocą:

$ npm install -g vtop

Dostępne są różne motywy i schematy kolorów, które pozwalają dostosować GUI do potrzeb użytkownika. Obsługiwane są różne skróty klawiaturowe, takie jak „u” do aktualizacji, „g” do przejścia na początek listy procesów, „G” do przejścia na koniec listy i „dd” do zamykania procesów z konkretnej grupy.

Standardjs

Standardjs to biblioteka JavaScript, która automatyzuje konfigurację plików, formatuje kod i szybko identyfikuje problemy z obsługą wyjątków. Instalacja Standardjs odbywa się przez polecenie:

$ npm install standard --global

Po instalacji można go uruchomić na fragmencie pliku/kodu za pomocą polecenia „standard” w wierszu poleceń. Wszystkie zależności Standardjs można dodać, definiując „standard: „*” w obiekcie zależności pliku package.json.

Można go również zainstalować jako wtyczkę do różnych edytorów tekstu, takich jak Visual Studio Code, Sublime Text, Atom, Vim, Brackets. Node.js, Expressjs, npm, Brave i GoDaddy używają Standardjs do realizacji swoich potrzeb biznesowych.

NodeJsScan

NodeJsScan to statyczny skaner bezpieczeństwa dla aplikacji Node.js. Dostarcza informacje o stanie bezpieczeństwa aplikacji w postaci interaktywnego interfejsu użytkownika. Można go zintegrować z aplikacjami, takimi jak Slack (powiadomienia), alerty e-mail (konfiguracja SMTP w pliku settings.py NodeJsScan) i potok CI/CD. Pomaga również w tworzeniu obrazów Dockera.

Rejestruje błędy, informacje i ostrzeżenia. Zawiera szczegółowy opis błędu, przyczyny jego wystąpienia, poziomu powagi, numeru linii w której błąd wystąpił, liczby przeskanowanych plików i znalezionych problemów. Dodatkowo prezentuje wykresy i diagramy dla lepszej czytelności i analizy.

Trash

Trash to biblioteka JavaScript, która przenosi usunięte pliki do kosza, zamiast trwale je usuwać. Obsługuje systemy macOS, Linux i Windows. Do instalacji Trash służy polecenie:

$ npm install trash

Trash jest interfejsem API przyjmującym dane wejściowe i opcje jako parametry funkcji trash(). Dane wejściowe mogą być łańcuchem znaków lub tablicą łańcuchów. Opcje mogą być obiektem. Funkcja kosza zwraca obietnicę. W różnych systemach operacyjnych używane są różne polecenia. Dla macOS jest to macOS-trash, dla Linux – XDG Spec, a dla Windows – kosz.

Xo

Xo jest wrapperem dla JavaScript i TypeScript, który wykorzystuje ESLint. Pomaga w tworzeniu czytelnego kodu poprzez automatyczne wcięcia, dodawanie średników, pojedynczych cudzysłowów, przecinków w odpowiednich miejscach. Wiele wtyczek ESLint, takich jak unicorn, import, ava i n, może być używanych z Xo. Instalacja odbywa się za pomocą polecenia:

$ npm install xo --save-dev

Problemy można naprawiać automatycznie za pomocą polecenia $xo –fix. Xo można skonfigurować za pomocą właściwości xo w pliku package.json. Można go również zainstalować jako wtyczkę do edytorów, np. Vim, Visual Studio Code, Atom, Sublime Text i Emacs.

diff2html

diff2html, czyli „parser różnic i generator HTML”. Podkreśla różnice w kodzie między aktualną wersją, a poprzednią. Pomaga programistom w szybkim identyfikowaniu i rozumieniu zmian wprowadzonych w kodzie. Wykorzystuje do tego kolorowe oznaczenia.

Podkreśla zmiany w kodzie linia po linii, prezentując je obok siebie. Podkreśla zmiany w składni i grupuje podobne wiersze, ułatwiając śledzenie zmian. Do instalacji diff2html używa się polecenia:

$ npm install diff2html

Jest zintegrowany z linią poleceń. Projekty używające diff2html to Jenkins, Codacy, Ungit, git-explorer i adnotacja kodu.

Kreda

Chalk to moduł Node.js, który pomaga w formatowaniu i stylizacji kodu. Ułatwia tworzenie i dodawanie kolorowych motywów do tekstu. Oferuje ekspresywne API i charakteryzuje się wysoką wydajnością. Umożliwia zagnieżdżanie stylów i nie ma zależności. Przykład użycia kredy:

import chalk from 'chalk';

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

chalk.level definiuje poziomy obsługi kolorów. „0” oznacza wyłączenie wszystkich kolorów, „1” – podstawową obsługę kolorów, „2” – obsługę 256 kolorów, a „3” – obsługę Truecolor. Modifikatory stylu wykorzystywane przez kredę do formatowania tekstu to np.: odwrócenie, ukrycie, widoczne, przekreślenie, pogrubienie, zerowanie, kursywa, podkreślenie, nadkreślenie, przyciemnienie.

NpKill

Npkill to narzędzie do usuwania starych i dużych folderów modułów węzłów. Ułatwia szybkie usuwanie modułów i zwalnianie miejsca w systemie. Został opracowany z wykorzystaniem TypeScript, JavaScript i Go. Nie ma żadnych zależności i jest łatwy w użyciu. Instalacja Npkill:

$ npm i -g npkill

Wszystkie moduły węzłów w podanej ścieżce zostaną usunięte. Należy jednak zachować ostrożność, ponieważ operacja ta jest nieodwracalna. Usunięcie modułów używanych w aktywnym projekcie może skutkować uszkodzeniem plików, a moduły będą musiały być zainstalowane ponownie.

fkill-cli

fkill-cli jest otwartym i interaktywnym narzędziem wiersza poleceń do zamykania procesów i portów Linuksa. Został opracowany przy użyciu Node.js. Jest prosty, darmowy, bezpieczny i kompatybilny z wieloma platformami (Windows, Linux i macOS). Instalacja fkill-cli:

$ npm install --global fkill-cli

Aby zamknąć proces, potrzebna jest jego nazwa lub identyfikator. Opcja „-f” wymusza operację, a „-v” wyświetla argumenty procesu. Interfejs API fkill przyjmuje dane wejściowe i opcje jako argumenty i zwraca obietnicę. Dostępne opcje to m.in. force, silent, ignoreCase, tree i forceAfterTimeout.

Tunel lokalny

Localtunnel to platforma umożliwiająca udostępnianie usług internetowych z lokalnego środowiska komputera do świata zewnętrznego, bez konieczności zmiany ustawień DNS i zapory sieciowej systemu.

Żądania są przekazywane przez Localtunnel i kierowane do lokalnie wdrożonego serwera po przypisaniu mu publicznego adresu URL. Instalacja Localtunnel:

$ npm install -g localtunnel

Jest bezpieczny i wykorzystuje żądania HTTPS. API może być użyte do testowania webhooków. Interfejs użytkownika można testować w przeglądarkach w chmurze za pomocą Localtunnel.

Inquirer.js

Inquirer.js to interaktywny interfejs użytkownika wiersza poleceń dla aplikacji Node.js. Ułatwia proces wyszukiwania błędów, analizowania danych wejściowych, sprawdzania poprawności odpowiedzi i zarządzania podpowiedziami hierarchicznymi. Wykorzystuje natywne moduły ESM. Instalacja Inquirer.js:

$ npm install --save inquirer

Dostępne metody to np. prompt, registerPrompt, createPromptModule. Funkcja prompt() przyjmuje pytanie i odpowiedź jako dane wejściowe i po wywołaniu zwraca obietnicę.

Pytanie jest obiektem reprezentującym wartości związane z pytaniem (np. typ, wiadomość, wartość domyślna, opcje, filtr). Para klucz-wartość odpowiedzi zawiera zaszyfrowaną wersję odpowiedzi użytkownika. Kluczem jest właściwość pytania, a wartość może zawierać np. potwierdzenie, dane wejściowe, liczbę, listę nieprzetworzonych danych.

serwer http

http-server to statyczny serwer http dostępny z wiersza poleceń. Jest prosty i nie wymaga żadnej konfiguracji. Składa się z plików index.html i 404.html. index.html to domyślny plik, który będzie renderowany na żądanie, a 404.html jest renderowany w przypadku nieznalezienia pliku. Instalacja http-server:

$ npm install --global http-server

Został opracowany w HTML i JavaScript. Zapewnia bezpieczeństwo poprzez certyfikaty TLS/SSL. Wykorzystuje algorytm RSA do szyfrowania i deszyfrowania klucza. Pozwala na zdefiniowanie hasła wraz z kluczem prywatnym dla dodatkowego bezpieczeństwa.

Podsumowanie

JavaScript jest powszechnie wykorzystywany do tworzenia oprogramowania. W celu ułatwienia życia programistom, stworzono liczne pakiety Node.js.

Pakiety takie jak Retire.js, Localtunnel, Xo, Inquirer.js, Shelljs, fpkill, NodeJsScan, Prettier, mogą być wykorzystywane do formatowania kodu, zapewniania bezpieczeństwa, wyróżniania zmian w kodzie, usuwania dużych i niepotrzebnych modułów węzłów. Dzięki nim programiści mogą efektywnie debugować, pisać i zarządzać swoim kodem.

Zachęcamy też do zapoznania się z artykułami na temat instalacji Node.js i NPM w systemach Windows i macOS.


newsblog.pl