NodeJS: 12 pacotes para produtividade do desenvolvedor





Gerente de processos de produção com balanceador de carga. Wrappers para depuração e ganchos Git, protegendo aplicativos expressos com cabeçalhos HTTP, um utilitário com mais de 180 funções para trabalhar com datas e outras ferramentas que economizarão seu tempo. Esta coleção é especialmente útil para desenvolvedores NodeJS novatos, mas pode agradar os céticos experientes.



Sempre que você precisar consertar um problema com seu código, é provável que já exista um pacote para resolver seu problema. Aqui está uma lista de pacotes que acho que todo desenvolvedor deve conhecer. Considere esses pacotes npm como uma economia de tempo.



1. Husky



O Husky facilita a implementação de ganchos no Git. Ele permite que você exija que todos executem lint e testem seu código automaticamente antes de enviar ou enviar para o repositório.





Fontes roucas



Instalação



yarn add husky


Inscrição



Exemplo de ganchos com husky:



// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "npm lint",
      "pre-push": "npm test"
    }
  }
}


pre-commité executado antes do commit.

pre-pushantes de enviar para o repositório.






2. Dotenv



Dotenv é um módulo sem dependências. Ele carrega as variáveis ​​de ambiente do arquivo .envem process.env . Manter a configuração em um ambiente separado do código é baseado na metodologia de aplicação de doze fatores . Fontes dotenv .



Instalação



yarn add dotenv


Inscrição



O mais cedo possível em seu aplicativo, escreva requiree defina os valores dotenv:



require('dotenv').config()


Crie um .envarquivo no diretório raiz do seu projeto. Adicione variáveis ​​de ambiente em novas linhas como NAME=VALUE. Por exemplo:



DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3


Agora process.envcontém as chaves e valores do arquivo .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 é semelhante a lodash, mas projetado para trabalhar com datas. Fornece um conjunto completo, mas simples e consistente de ferramentas de manipulação de data JavaScript no navegador e Node.JS.





Fontes date-fns



Instalação



yarn add date-fns


Inscrição



Exemplo com 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  
// ]


Documentação com exemplos e casos de uso.






4. Bunyan



Bunyan é uma biblioteca de registro JSON poderosa e fácil de usar para Node.





Fontes Bunyan



Instalação



yarn add bunyan


Observação: a CLI foi bunyanescrita para ser compatível (dentro do razoável) com todas as versões dos logs do Bunyan. Portanto, você pode instalá-lo globalmente: yarn add global bunyanpara obter essa ferramenta PATHe, em seguida, usar as instalações Bunyan locais para os aplicativos.



Inscrição



Bunyan é uma biblioteca de registro JSON simples e rápida para serviços Node.js.



// hi.jsconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});
log.info("hi");


Aqui está o que retorna ao console se você executar node hi.js.










5. Ramda



Ramda é uma biblioteca de estilo funcional prática e útil. Ele enfatiza o estilo funcional puro. A imutabilidade e a funcionalidade sem efeitos colaterais estão no cerne da filosofia de design da Ramda. Essa abordagem pode ajudá-lo a escrever um código simples e elegante.





Fontes ramda



Instalação



yarn add ramda


Inscrição



import * as R from 'ramda'
const greet = R.replace('{name}', R.__, 'Hello, {name}!'); 
greet('Alice'); //=> 'Hello, Alice!'


Exemplos de código






6. Depurar



Debug é um pequeno utilitário de depuração de JavaScript modelado após a técnica de depuração Node.JS





Fontes de depuração



Instalação



yarn add debug


Inscrição



Debug fornece uma função. Simplesmente passe o nome do seu módulo para esta função, e ela retornará uma versão decorada console.errorpara passar instruções de depuração.



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


Mostra e oculta a saída de depuração de um módulo como um todo ou partes dele.








7. Plano



Plano pega um objeto e o achata. Você também pode recolher um objeto separado por chave. [Nota. trad. - não apenas um ponto pode ser um separador].





Fontes planas



Instalação



yarn add flat


Inscrição



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



O JSON5 Data Interchange Format é um superconjunto do JSON que visa aliviar algumas das limitações do JSON, estendendo sua sintaxe para incluir alguns dos recursos do ECMAScript 5.1 .





Fontes JSON5



Instalação



yarn add json5  
const JSON5 = require('json5')


Inscrição



Preste atenção à extensão do arquivo. JSON5 é um superconjunto, uma extensão de 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 é uma ótima ferramenta para evitar erros e definir padrões de codificação para equipes de desenvolvimento. ESLint é uma ferramenta para identificar e representar padrões encontrados no código ECMAScript / JavaScript.





Fontes ESLint



Instalação e aplicação



yarn add eslint


Em seguida, configure o arquivo de configuração:



./node_modules/.bin/eslint --init


Depois disso, você pode executar o ESLint em qualquer arquivo ou diretório, por exemplo:



./node_modules/.bin/eslint yourfile.js


Documentação com muitos exemplos de introdução e configuração.






10. PM2



PM2 é um gerenciador de processo de produção com balanceador de carga integrado. Ele permite que você mantenha os aplicativos em execução o tempo todo, recarregue-os sem tempo de inatividade e facilita as tarefas comuns de administração do sistema.





Fontes pm2



Instalação



yarn add global pm2


Lançamento de aplicativo



Você pode executar qualquer aplicativo (Node.js, Python, Ruby, binários $PATHe assim por diante) assim:



pm2 start app.js


Seu aplicativo agora está sendo executado sob o controle de um daemon e continuamente monitorado e mantido. Saiba mais sobre gerenciamento de processos, início rápido .



E aqui está como você pode listar todos os aplicativos em execução:



pm2 ls






Verifique a documentação oficial para uma lista completa de recursos e capacidades.






11. Capacete



O Helmet ajuda a proteger aplicativos express por meio de cabeçalhos HTTP. Não é uma bala de prata, mas pode ajudar.





Fontes de capacetes



Instalação



yarn add helmet


Inscrição



Helmeté escrito no estilo Connect e é compatível com estruturas como Express . Se precisar de suporte Koa, consulte koa-helmet.)



const express = require("express");  
const helmet = require("helmet");
const app = express();
app.use(helmet());


A função de capacete envolve 11 middleware menor. Em outras palavras, equivalente a



// ...
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. Compressão



A compressão é uma ferramenta de compressão de dados.





Fontes de compressão



Instalação



yarn add compression


Inscrição



Ao usar este módulo junto com o express, ou connectapenas chame o compression()middleware. As solicitações que passam pelo middleware serão compactadas.



const compression = require('compression')  
const express = require('express')
const app = express()
//     
app.use(compression())// ...


Quais ferramentas você usa para trabalhar com o NodeJS?



imagem


Descubra os detalhes de como obter uma profissão de alto perfil do zero ou Subir de nível em habilidades e salários, fazendo cursos online SkillFactory:





E







All Articles