Strávíte příliš mnoho času kódováním v JavaScriptu? Přečtěte si dále a objevte řadu balíčků Node.js, které mohou vývojářům pracujícím s JavaScriptem značně ulehčit a zefektivnit jejich práci.
JavaScript je synchronní, jednovláknový jazyk. Patří k nejpoužívanějším programovacím jazykům pro vývoj softwaru a aplikací. Na jeho základech bylo postaveno mnoho frameworků, jako jsou Reactjs, Angularjs, Vuejs, Expressjs a Node.js.
Mnoho vývojářů se potýká s problémy při kódování v JavaScriptu, a to kvůli různým složitým konceptům, jako jsou například promisy, event loop, callback funkce, hoisting nebo closures.
Pro usnadnění vývoje v JavaScriptu existuje celá řada balíčků Node.js. Tyto balíčky pomáhají při zpracování chyb, formátování kódu, mazání souborů, ladění, zabezpečení a podobně. Některé z nich navíc poskytují interaktivní rozhraní příkazové řádky pro lepší vizuální zobrazení výkonu CPU, kapacity zpracování nebo závažnosti chyb.
Retire.js
Retire.js je knihovna JavaScriptu, která obsahuje seznam zranitelností, které se mohou vyskytnout ve starších verzích JavaScript knihoven.
Lze ji využít jako rozšíření pro Chrome či Firefox, jako skener příkazové řádky, nebo jako Grunt plugin. Instaluje se pomocí příkazu:
$ npm install -g retire
Retire.js disponuje různými příkazy pro skenování JavaScriptových souborů a uzlů. Prohledává webové stránky napsané v JavaScriptu a zapisuje varování do vývojářské konzole. Pokud Retire.js najde zranitelnosti, vygeneruje kód ukončení 13. Gulp task umí automaticky skenovat soubory a hlásit zranitelnosti.
Np
Np je JavaScriptový balíček s celou řadou funkcí, včetně čištění kódu, instalace závislostí, publikování balíčků nebo správy tagů. Dohlíží na to, aby byl kód přenesen do hlavní větve, a nabízí interaktivní uživatelské rozhraní.
Pro zvýšení bezpečnosti nových úložišť se používá dvoufaktorová autentizace. Přeinstalováním závislostí se zajistí, že se pracuje s nejnovější verzí. Nejnovější verze se následně odesílá do npm. Np se instaluje pomocí příkazu:
$ npm install --global np
Mezi jeho funkce patří například publikování kódu z libovolné větve, vytváření podadresářů pro publikování, nebo přeskočení čištění kódu a testování. Np lze konfigurovat globálně i lokálně s využitím příznaků CLI v konfiguračních souborech np, jako jsou np-config.js a np-config.json.
ESLint
ESLint je nástroj, který slouží k analýze JavaScriptového kódu a identifikuje vzory v kódu ECMA/JavaScript. Vzory kódu vyhodnocuje pomocí AST. Všechna pravidla nástroje jsou definována jako pluginy, které je možné dynamicky přidávat za běhu. ESLint se instaluje pomocí následujícího příkazu:
$ npm init @eslint/config
Po instalaci se pomocí výše uvedeného příkazu vygeneruje soubor .eslintrc se sadou pravidel, definicemi chyb a jejich příslušnými podmínkami. ESLint umožňuje definovat veškeré závislosti v uživatelském souboru .lock a nepoužívá vlastní soubor .lock. Je také velmi bezpečný.
Shelljs
Shelljs je prostředí, ve kterém lze prostřednictvím Node.js API spouštět UNIXové příkazy na libovolném operačním systému. Shelljs je přenositelný a podporuje i pluginy třetích stran. Můžete používat různé příkazy jako echo, exec, chmod, pushd, popd, cd, cat a další. Shelljs se instaluje pomocí příkazu:
$ npm install [-g] shelljs
Shelljs byl testován v různých projektech, jako jsou Firefox, JSHint, ESLint nebo Zepto. Místní import balíčků Shelljs je upřednostňován před globálním. Může být nakonfigurován jako tichý, fatální, nebo upovídaný.
Omeleta
Omeleta poskytuje šablonu pro automatické dokončování kódu v projektech Node a Deno. Využívá velmi jednoduché API a podporuje i Async API a Tree API. Ukázkový fragment kódu pro implementaci Omelety je uveden níže:
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 importu Omelety je třeba vytvořit objekt Omeleta. Následně lze na objektu Omeleta volat různé funkce pro automatické dokončování kódu, jako je setupShellInitFile() pro nastavení nebo cleanupShellInitFile() pro vyčištění. Omeleta podporuje i použití funkcí Lambda pro vytváření složitých šablon API.
Prettier
Prettier se používá pro formátování kódu. Pomáhá s vytvářením mezer pomocí tabulátorů, sleduje maximální obsah na jednom řádku a zajišťuje správné odsazení v podmíněných a smyčkových příkazech. Převádí kód do čistého a čitelného formátu. Příklad:
Fragment kódu před aplikací Prettieru:
foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
Stejný kód po aplikaci Prettieru:
foo( reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne() );
Prettier se dá spustit v CI prostředí, IDE a dalších.
jscpd
jscpd je nástroj pro správu technického dluhu. Je to balíček JavaScriptu, který pomáhá nacházet duplicitní části kódu v různých souborech a digitálních dokumentech. K nalezení duplikací používá algoritmus pro porovnávání řetězců s názvem Rabin-Karp.
jscpd/core má schopnost detekovat duplikace kódu v různých prostředích. jspd/tokenizer se používá pro tokenizaci zdrojového kódu programu. Existuje i mnoho dalších balíčků jako html-reporter, badge-reporter, nebo leveldb-store. jscpd se instaluje pomocí příkazu:
$ npm install -g jscpd
jscpd využívají nástroje jako GitHub Super Linter, Code-Inspector, Mega-Linter nebo Codacy, každý k jinému účelu. Využívají ho pro zpracování přirozeného jazyka, agregaci řádků, analýzu kódu a další.
Vtop
Vtop je monitor, který graficky znázorňuje aktivitu příkazové řádky. Analyzuje běžící vlákna a procesy, poskytuje informace o využití CPU a graficky je zobrazuje pomocí grafů, špiček a dalších. Vtop byl vyvinut s využitím JavaScriptu, Makefile a Shell. Instaluje se pomocí příkazu:
$ npm install -g vtop
K přizpůsobení uživatelského rozhraní můžete použít různá témata a barevné kódy. K dispozici jsou také klávesové zkratky, například „u“ pro aktualizaci, „g“ pro přesun na začátek seznamu procesů, „G“ pro přesun na konec seznamu nebo „dd“ pro ukončení procesů patřících do konkrétní skupiny.
Standardjs
Standardjs je knihovna JavaScriptu, která automatizuje konfiguraci souborů, formátuje kód a rychle nachází problémy se zpracováním výjimek. Instaluje se pomocí příkazu:
$ npm install standard --global
Po instalaci ho můžete spustit nad souborem nebo fragmentem kódu pomocí příkazu „standard“ v příkazové řádce. Veškeré závislosti Standardjs lze přidat definováním „standard“: „*“ v objektu závislostí v souboru package.json.
Standardjs je možné instalovat jako plugin do různých textových editorů, jako jsou Visual Studio Code, Sublime Text, Atom, Vim nebo Brackets. Standardjs využívají ke svým obchodním účelům například Node.js, Expressjs, npm, Brave a GoDaddy.
NodeJsScan
NodeJsScan je skener pro statickou analýzu zabezpečení aplikací Node.js. Prostřednictvím interaktivního uživatelského rozhraní informuje o stavu zabezpečení aplikace. Lze ho integrovat s různými aplikacemi, jako je například Slack pro výstrahy a oznámení, e-mailová upozornění (po konfiguraci nastavení SMTP v souboru settings.py NodeJsScan) nebo CI/CD potrubí. Pomáhá také při vytváření docker imagí.
NodeJsScan zaznamenává chyby, informace a varování. Poskytuje podrobný popis chyby, včetně důvodu jejího výskytu, její závažnosti, čísel řádků, počtu zkontrolovaných souborů a nalezených problémů. Pro lepší čitelnost a analýzu jsou také vykreslovány grafy a tabulky.
Trash
Trash je knihovna JavaScriptu, která přesune smazané soubory do koše, místo aby je trvale odstranila. Podporuje Mac, Linux i Windows. Instaluje se pomocí příkazu:
$ npm install trash
Trash je API, které při vyvolání funkce trash() přebírá vstup a možnosti jako parametry funkce. Vstupem může být řetězec nebo pole řetězců, možnosti mohou být objekt. Funkce trash vrátí promisu. V různých operačních systémech se používají různé příkazy. macOS-trash se používá v macOS, XDG Spec v Linuxu a koš ve Windows.
Xo
Xo je wrapper pro JavaScript a TypeScript, který využívá ESLint. Pomáhá vytvářet čitelný kód tím, že jej odsazuje, přidává středníky, jednoduché uvozovky, čárky a další, kdykoli je to potřeba. S Xo můžete používat spoustu ESLint pluginů, jako je například unicorn, import, ava nebo n. Xo se instaluje pomocí příkazu:
$ npm install xo --save-dev
Problémy lze automaticky opravit pomocí příkazu $xo –fix. Xo je konfigurovatelný pomocí vlastnosti xo v souboru package.json. Lze ho instalovat jako plugin do různých editorů, jako jsou Vim, Visual Studio Code, Atom, Sublime Text nebo Emacs.
diff2html
diff2html je zkratka pro „analyzátor rozdílů a pěkný generátor HTML“. Zvýrazňuje změny kódu aktuální verze ve srovnání s předchozí verzí. Pomáhá vývojářům snadno identifikovat a pochopit, jaké změny byly provedeny. Dělá to pomocí barevných kódů.
Změny zvýrazňuje po řádcích a vedle sebe. Zvýrazňuje syntaxi kódu a seskupuje podobné řádky, aby bylo možné snadno sledovat změny kódu. Instaluje se pomocí příkazu:
$ npm install diff2html
diff2html je integrován i s příkazovou řádkou. Mezi projekty využívající diff2html patří Jenkins, Codacy, Ungit, git-explorer nebo code-anotace.
Chalk
Chalk je modul Node.js, který pomáhá formátovat a stylovat kód. Pomáhá i s vytvářením barevných motivů pro text. Jedná se o expresivní API a jeho výkon je vynikající. Styly lze vnořovat a modul nemá žádné závislosti. Příklad použití Chalk:
import chalk from 'chalk'; console.log(chalk.blue('Hello world!'));
Vlastnost chalk.level definuje úrovně barev, které jsou podporovány. „0“ znamená, že jsou všechny barvy zakázané, „1“ značí základní podporu barev, „2“ znamená podporu 256 barev a „3“ značí podporu Truecolor. Chalk podporuje různé modifikátory stylů pro formátování textu, například inverzní, skrytý, viditelný, přeškrtnutý, tučný, resetovaný, kurzíva, podtržení, překrytí nebo ztlumení.
NpKill
Npkill je nástroj, který odstraňuje staré a nepotřebné složky uzlových modulů. Pomáhá rychle odebírat moduly uzlů a uvolnit místo v systému. Npkill byl vyvinut s použitím TypeScript, JavaScript a Go. Nemá žádné závislosti a snadno se používá. Instaluje se pomocí příkazu:
$ npm i -g npkill
Všechny moduly uzlů zadané v cestě pomocí příkazu npkill budou odstraněny. Při odstraňování modulů je ale třeba být opatrný, protože je tato akce nevratná. Pokud během procesu odstraníte moduly aktivního projektu, soubory se poškodí a bude nutné moduly uzlů nainstalovat znovu.
fkill-cli
fkill-cli je open-source a interaktivní nástroj příkazové řádky, který ukončuje linuxové procesy a porty. Je vyvinutý pomocí Node.js. Je jednoduchý, bezplatný, bezpečný a kompatibilní s různými platformami. Funguje na Windows, Linux i macOS. Instaluje se pomocí příkazu:
$ npm install --global fkill-cli
K ukončení procesu je vyžadováno jméno a ID procesu. Pomocí příznaku „-f“ vynutíte provedení operace a příkaz „-v“ zobrazí argumenty procesu. Rozhraní fkill API přijímá vstupy a možnosti jako argumenty a vrací objekt promisy. Mezi některé možnosti patří force, silent, ignoreCase, tree a forceAfterTimeout.
Localtunnel
Localtunnel je platforma, která umožňuje sdílení webových služeb z externího prostředí s místním prostředím počítače bez nutnosti změny nastavení DNS nebo firewallu systému.
Požadavky jsou přesměrovány přes proxy server Localtunnel a jsou následně odeslány na lokálně nasazený server poté, co mu přidělíte veřejně přístupnou URL adresu. Instaluje se pomocí příkazu:
$ npm install -g localtunnel
Je bezpečný a používá HTTPS požadavky. API Localtunnel můžete použít k testování webhooků. S využitím Localtunnel je možné testovat uživatelské rozhraní v cloudových prohlížečích.
Inquirer.js
Inquirer.js je interaktivní uživatelské rozhraní příkazové řádky pro aplikace Node.js. Usnadňuje proces hledání chyb, analýzu vstupu, ověřování odpovědí a správu hierarchických výzev. Pro implementaci svých funkcí využívá nativní moduly ESM. Instaluje se pomocí příkazu:
$ npm install --save inquirer
Mezi různé používané metody patří prompt, registerPrompt nebo createPromptModule. Funkce prompt() přijímá otázku a odpověď jako vstup a po vyvolání vrací promisu.
Otázka je objekt, který je hašovanou verzí hodnot souvisejících s otázkou, například typ, zpráva, výchozí nastavení, volby nebo filtr. Dvojice klíč–hodnota v objektu odpovědi obsahuje hašovanou verzi odpovědí klienta. Klíčem je vlastnost otázky a hodnota může obsahovat potvrzení, vstup, číslo, rawlist a další.
http-server
http-server je statický http server příkazové řádky. Je jednoduchý a nevyžaduje žádnou konfiguraci. Skládá se ze dvou souborů: index.html a 404.html. index.html je výchozí soubor, který se zobrazí při požadavku. 404.html se zobrazí, když soubor není nalezen. Instalace http-server se provádí pomocí příkazu:
$ npm install --global http-server
http-server byl vyvinut s pomocí HTML a JavaScriptu. Zajišťuje bezpečnost pomocí certifikátů TLS/SSL. K šifrování a dešifrování klíčů používá algoritmus RSA. Umožňuje také definovat přístupovou frázi společně se soukromým klíčem pro zvýšení bezpečnosti.
Závěrečná slova
JavaScript patří k nejrozšířenějším programovacím jazykům pro vývoj softwaru. Pro usnadnění práce vývojářů bylo vyvinuto mnoho balíčků Node.js.
Balíčky Node.js jako Retire.js, Localtunnel, Xo, Inquirer.js, Shelljs, fpkill, NodeJsScan, Prettier a další je možné využít pro formátování kódu, zvýšení bezpečnosti, zvýrazňování změn kódu, odstraňování zbytečných modulů uzlů a podobně. Pomáhají tak vývojářům efektivně ladit, psát a spravovat jejich kód.
Můžete si také přečíst o tom, jak nainstalovat Node.js a NPM na Windows a macOS.