19 Pacotes Node.js Essenciais para Devs JavaScript: Otimize Seu Código Agora!

Está a perder muito tempo a tentar criar código JavaScript? Continue a ler para descobrir diversos pacotes Node.js que podem otimizar o trabalho e simplificar a vida de um programador JavaScript.

JavaScript é uma linguagem síncrona, de thread único. É a linguagem de programação mais popular para o desenvolvimento de software e aplicações. Muitos frameworks, como Reactjs, Angularjs, Vuejs, Expressjs e Node.js, foram desenvolvidos usando a linguagem JavaScript como base.

Muitos programadores encontram dificuldades ao codificar em JavaScript devido à complexidade de conceitos como promises, event loop, callbacks, hoisting, closures, etc.

Para facilitar o desenvolvimento em JavaScript, existem muitos pacotes Node.js que auxiliam no tratamento de erros, formatação de código, remoção de ficheiros, depuração de código, garantia de segurança, entre outros. Alguns até oferecem interfaces de linha de comandos interativas, proporcionando uma melhor representação visual da capacidade de processamento da CPU, a gravidade dos erros, etc.

Retire.js

Retire.js é uma biblioteca JavaScript que identifica vulnerabilidades associadas a diferentes versões de outras bibliotecas JavaScript.

Pode ser usado como uma extensão do Chrome, extensão do Firefox, um scanner de linha de comandos, plugin Grunt, entre outros. A instalação pode ser realizada através do seguinte comando:

$ npm install -g retire

Retire.js inclui vários comandos para analisar ficheiros JavaScript e Node. Ele verifica websites JavaScript e reporta os avisos na consola de desenvolvimento. Retire.js gera o código de saída 13 quando identifica vulnerabilidades. A tarefa Gulp verifica automaticamente os ficheiros e reporta as vulnerabilidades.

Np

Np é um pacote JavaScript que oferece funcionalidades como limpeza de código, instalação de dependências, publicação de pacotes e tags. Assegura que o código é enviado para a branch master e oferece uma interface de utilizador interativa.

A autenticação de dois fatores é utilizada para garantir a segurança de novos repositórios. O pacote reinstala as dependências, garantindo que o trabalho é realizado na versão mais recente. A versão mais recente é enviada para o npm. Pode ser instalado com o seguinte comando:

$ npm install --global np

As suas funcionalidades incluem a publicação de código a partir de qualquer branch, a criação de subdiretórios para publicação, a possibilidade de ignorar a limpeza de código e testes, etc. A configuração do np pode ser efetuada globalmente ou localmente através de flags CLI nos ficheiros de configuração do np, como np-config.js e np-config.json.

ESLint

ESLint é uma ferramenta JavaScript que analisa código JavaScript e identifica padrões no código ECMA/JavaScript. Avalia padrões no código utilizando AST. Todas as regras da ferramenta são definidas em plugins, e podem ser adicionadas dinamicamente em tempo de execução. O ESLint pode ser instalado usando o seguinte comando:

$ npm init @eslint/config

Após a instalação com o comando acima, é gerado um ficheiro .eslintrc com um conjunto de regras, definições de erros e as suas respetivas condições. O ESLint permite que todas as dependências sejam definidas no ficheiro .lock do utilizador, não utilizando um ficheiro .lock próprio, sendo também altamente seguro.

Shelljs

Shelljs é um ambiente que permite executar comandos UNIX em qualquer sistema operativo através da API Node.js. É portátil e suporta plugins de terceiros. Os comandos disponíveis incluem echo, exec, chmod, pushd, popd, cd, cat, etc. O seguinte comando pode ser usado para instalar Shelljs.

$ npm install [-g] shelljs

Foi testado em diversos projetos como Firefox, JSHint, ESLint, Zepto, etc. A importação local de pacotes Shelljs é preferível à importação global. Também pode ser configurado como silencioso, fatal, verboso, etc.

Omelette

O Omelette oferece um modelo para preenchimento automático de código em projetos Node e Deno. Usa uma API fácil e suporta API Async e API de árvore. Abaixo, pode ver um exemplo de código para implementar o 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()

Depois de importar o Omelette, deve ser criado um objeto Omelette. Em seguida, várias funções para o preenchimento automático de código, como setupShellInitFile() para configuração, cleanupShellInitFile() para limpeza, podem ser chamadas no objeto omelette. Também suporta o uso de funções Lambda para a criação de APIs literais de modelos complexos.

Prettier

Prettier é usado para formatar código. Ajuda a definir espaços de tabulação, controla o conteúdo máximo numa linha e garante um recuo adequado dentro de instruções condicionais e de loop. Converte o código para um formato limpo e legível. Por exemplo:

O seguinte trecho de código:

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

é transformado em:

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

Pode ser executado em ambientes CI, Ambientes de Desenvolvimento Integrado (IDEs), etc.

jscpd

jscpd é um serviço técnico de gestão de dívidas. É um pacote JavaScript que ajuda a encontrar trechos de código duplicados em diversos códigos e documentos digitais. Utiliza um algoritmo de correspondência de strings chamado Rabin-Karp para encontrar duplicações de código.

jscpd/core tem a capacidade de detetar duplicação de código em diversos ambientes, e jspd/tokenizer é usado para tokenizar o código-fonte do programa. Além destes, existem muitos outros pacotes, como html-reporter, badge-reporter, leveldb-store, etc. O comando para instalar o jscpd é:

$ npm install -g jscpd

jscpd é utilizado pelo GitHub Super Linter, Code-Inspector, Mega-Linter, Codacy, entre outros. Cada um usa o jscpd para um propósito diferente, seja para processamento de linguagem natural, agregadores de linha, ou análise de código.

Vtop

Vtop é um monitor que fornece uma representação gráfica da atividade da linha de comandos. Oferece informações sobre a utilização da CPU, analisando os vários threads e processos em execução e representando-os graficamente através de gráficos, picos, etc. Foi desenvolvido usando JavaScript, Makefile e Shell. O comando para instalar o Vtop é:

$ npm install -g vtop

Vários temas e códigos de cores podem ser utilizados para tornar a GUI mais apelativa de acordo com os requisitos. Atalhos de teclado como “u” para atualização, “g” para ir para o início do processo da lista, “G” para mover para o final da lista, “dd” para eliminar processos pertencentes a um determinado grupo, podem ser usados.

Standardjs

Standardjs é uma biblioteca JavaScript que automatiza a configuração de ficheiros, formata código e identifica rapidamente problemas no tratamento de exceções dos programadores. O comando para instalar o Standardjs é:

$ npm install standard --global

Depois da instalação, pode ser executado em um ficheiro/trecho de código usando o comando “standard” na interface de linha de comando. Todas as dependências do Standardjs podem ser adicionadas ao definir “standard: “*” no objeto de dependência do ficheiro package.json.

Pode também ser instalado como um plugin para diversos editores de texto como Visual Studio Code, Sublime Text, Atom, Vim, Brackets, etc. Node.js, Expressjs, npm, Brave e GoDaddy usam Standardjs para satisfazer as suas necessidades de negócio.

NodeJsScan

NodeJsScan é um scanner de código de segurança estática para aplicações Node.js. Informa sobre o estado de segurança de uma aplicação através de uma interface de utilizador interativa. Pode ser integrado com diversas aplicações, como o Slack, para alertas/notificações, alertas de e-mail configurando as definições de SMTP no ficheiro settings.py do NodeJsScan, pipeline CI/CD, etc. Auxilia também na construção de imagens docker.

Regista erros, informações e mensagens de aviso. Apresenta uma descrição detalhada do erro, como o motivo da ocorrência, a sua gravidade, os números das linhas onde os erros ocorreram, o número de ficheiros verificados e problemas encontrados, etc. Gráficos e tabelas são gerados para uma melhor leitura e análise.

Lixeira (Trash)

Lixeira é uma biblioteca JavaScript que move os ficheiros excluídos para a lixeira, em vez de os eliminar permanentemente. Suporta Mac, Linux e Windows. O comando usado para instalar a Lixeira é:

$ npm install trash

Trash é uma API que recebe entradas e opções como parâmetros de função quando a função trash() é invocada. A entrada pode ser uma string ou um array de strings. As opções podem ser um objeto. A função trash retorna uma promise. Diferentes comandos são utilizados em diferentes sistemas operativos. O macOS-trash é usado no MacOS, XDG Spec no Linux e lixeira no Windows.

Xo

Xo é um wrapper JavaScript e TypeScript que utiliza o ESLint como base. Auxilia na criação de código legível, adicionando recuo ao código, adicionando ponto e vírgula, aspas simples, vírgulas, etc., sempre que necessário. Muitos plugins ESLint, como unicorn, import, ava, n, etc., podem ser usados com o Xo. O comando para instalar o xo é:

$ npm install xo --save-dev

Os problemas podem ser corrigidos automaticamente usando o comando $xo –fix. O Xo pode ser configurado através da propriedade xo no ficheiro package.json. Pode ser instalado como um plugin para diversos editores como Vim, Visual Studio Code, Atom, Sublime Text, Emacs, etc.

diff2html

diff2html significa “analisador de diferenças e gerador de HTML bonito”. Destaca as alterações no código da versão atual, comparando com a versão anterior. Ajuda os programadores a identificar e entender facilmente que alterações foram efetuadas, utilizando códigos de cores.

Faz isso realçando as alterações linha por linha e lado a lado. Destaca as alterações de sintaxe de código e agrupa linhas semelhantes para facilitar o rastreamento de alterações no código. O comando para instalar o diff2html é:

$ npm install diff2html

Também é integrado com a linha de comandos. Alguns projetos que utilizam diff2html são Jenkins, Codacy, Ungit, git-explorer, code-annotation, etc.

Chalk

Chalk é um módulo Node.js que ajuda na formatação e estilo de código. Auxilia na criação e adição de temas de cores ao texto. É uma API expressiva, e o seu desempenho é excelente. Aninha estilos e não tem dependências. O uso do Chalk pode ser visto no trecho de código abaixo:

import chalk from 'chalk';

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

chalk.level define as cores que são suportadas em cada nível. ‘0’ indica que todas as cores estão desativadas, ‘1’ indica suporte básico de cores, ‘2’ indica suporte a 256 cores e ‘3’ indica suporte a Truecolor. Os diversos modificadores de estilo para formatar texto suportados por Chalk são: inverso, oculto, visível, tachado, negrito, redefinir, itálico, sublinhado, sobrelinhado, escurecido, etc.

Npkill

Npkill é uma ferramenta que remove pastas de módulos de nó antigas e pesadas. Ajuda a remover módulos de nó rapidamente e a liberar espaço no sistema. Foi desenvolvido usando TypeScript, JavaScript e Go. Não tem dependências e é fácil de usar. O comando para instalar o Npkill é:

$ npm i -g npkill

Todos os módulos de nó especificados no caminho com o comando npkill serão excluídos. No entanto, é preciso ter cuidado ao excluir os módulos, pois é irreversível. Se os módulos de qualquer projeto ativo forem excluídos, os ficheiros serão corrompidos e os módulos de nó terão que ser reinstalados.

fkill-cli

fkill-cli é uma ferramenta de linha de comandos interativa e de código aberto que termina processos e portas no Linux. Foi desenvolvido usando Node.js. É simples, gratuito, seguro e compatível com várias plataformas. Funciona em Windows, Linux e macOS. O comando usado para instalar o fkill-cli é:

$ npm install --global fkill-cli

O nome e o ID do processo são necessários para terminar o processo. “-f” força a execução da operação enquanto o comando “-v” exibe os argumentos do processo. A API fkill recebe entradas e opções como seus argumentos e retorna um objeto promise. Algumas opções são force, silent, ignoreCase, tree e forceAfterTimeout.

Localtunnel

Localtunnel é uma plataforma que permite partilhar serviços web de um ambiente externo com o ambiente local de um computador, sem alterar as definições de DNS e firewall do sistema.

As solicitações são encaminhadas pelo Localtunnel e transmitidas para o servidor implantado localmente, depois de lhe atribuir um URL acessível publicamente. O comando para instalar o Localtunnel é:

$ npm install -g localtunnel

É seguro e utiliza solicitações HTTPS. Estas APIs podem ser usadas para testar webhooks. A interface de utilizador pode ser testada em navegadores na nuvem usando o Localtunnel.

Inquirer.js

Inquirer.js é uma interface de utilizador interativa de linha de comandos para aplicações Node.js. Facilita o processo de identificação de erros, análise de entradas, validação de respostas e gestão de prompts hierárquicos. Utiliza módulos ESM nativos para a implementação das suas funcionalidades. O comando usado para instalar o Inquirer.js é:

$ npm install --save inquirer

Vários métodos utilizados incluem prompt, registerPrompt, createPromptModule, etc. prompt() é uma função que recebe perguntas e respostas como entradas e retorna uma promise quando invocada.

Question é um objeto que é uma versão hash de valores relacionados à pergunta, como tipo, mensagem, padrão, opções, filtro, etc. O par de objetos de valor-chave de resposta contém a versão hash das respostas do cliente. A chave é a propriedade da pergunta, enquanto o valor pode conter confirm, input, number, rawlist, etc.

http-server

http-server é um servidor http estático de linha de comandos. É simples e não requer nenhuma configuração. Consiste em 2 ficheiros: index.html e 404.html. index.html é o ficheiro padrão que será renderizado nas solicitações. 404.html é renderizado quando um ficheiro não é encontrado. O comando usado para instalar o servidor http é:

$ npm install --global http-server

Foi desenvolvido usando HTML e JavaScript. Garante a segurança através de certificados TLS/SSL. Utiliza o algoritmo RSA para encriptação e desencriptação de chaves. Permite ainda definir uma password juntamente com uma chave privada para fins de segurança.

Considerações Finais

JavaScript é a linguagem de programação mais utilizada para o desenvolvimento de software. Para simplificar o trabalho dos programadores, vários pacotes Node.js foram desenvolvidos.

Pacotes Node.js como Retire.js, Localtunnel, Xo, Inquirer.js, Shelljs, fpkill, NodeJsScan, Prettier, entre outros, podem ser usados para formatar código, garantir a segurança, destacar alterações de código, remover módulos de nó pesados e indesejados, etc. Isto ajuda os programadores a depurar, escrever e gerir o seu código de forma eficaz.

Pode também saber mais sobre como instalar o Node.js e o NPM no Windows e no macOS.