NodeJS: 12 paquetes para la productividad del desarrollador





Gestor de procesos para producción con balanceador de carga. Wrappers para depuración y ganchos de Git, protección de aplicaciones express con encabezados HTTP, una utilidad con más de 180 funciones para trabajar con fechas y otras herramientas que le permitirán ahorrar tiempo. Esta colección es especialmente útil para los desarrolladores novatos de NodeJS, pero puede complacer a los escépticos experimentados.



Siempre que necesite solucionar un problema con su código, es probable que ya exista un paquete para solucionar su problema. Aquí hay una lista de paquetes que creo que todo desarrollador debería conocer. Considere estos paquetes npm como un ahorro de tiempo.



1. Husky



Husky facilita la implementación de ganchos en Git. Le permite exigir a todos que realicen automáticamente la prueba de su código antes de enviarlo o enviarlo al repositorio.





Fuentes husky



Instalación



yarn add husky


Solicitud



Ejemplo de ganchos con husky:



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


pre-commitse ejecuta antes de la confirmación.

pre-pushantes de enviarlo al repositorio.






2. Dotenv



Dotenv es un módulo sin dependencias. Carga variables de entorno desde el archivo .enva process.env . Mantener la configuración en un entorno separado del código se basa en la metodología de aplicación de doce factores . Fuentes dotenv .



Instalación



yarn add dotenv


Solicitud



Escriba requirey establezca los valores lo antes posible en su aplicación dotenv:



require('dotenv').config()


Cree un .envarchivo en el directorio raíz de su proyecto. Agregue variables de entorno en nuevas líneas como NAME=VALUE. Por ejemplo:



DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3


Ahora process.envcontiene las claves y valores del archivo .env:



const db = require('db')
db.connect({ host: process.env.DB_HOST, username: process.env.DB_USER, password: process.env.DB_PASS})





3.fecha-fns



Date-fns es similar a lodash, pero está diseñado para trabajar con fechas. Proporciona un conjunto completo pero simple y consistente de herramientas de manipulación de fechas de JavaScript en el navegador y Node.JS.





Fuentes date-fns



Instalación



yarn add date-fns


Solicitud



Ejemplo con 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  
// ]


Documentación con ejemplos y casos de uso.






4. Bunyan



Bunyan es una biblioteca de registro JSON potente y fácil de usar para Node.





Fuentes bunyan



Instalación



yarn add bunyan


Tenga en cuenta: la CLI está bunyanescrita para ser compatible (dentro de lo razonable) con todas las versiones de los registros de Bunyan. Por lo tanto, puede instalarlo globalmente: yarn add global bunyanpara obtener esta herramienta PATHy luego usar las instalaciones locales de Bunyan para las aplicaciones.



Solicitud



Bunyan es una biblioteca de registro JSON simple y rápida para los servicios de Node.js.



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


Esto es lo que se devuelve a la consola si ejecuta node hi.js.










5. Ramda



Ramda es una biblioteca de estilo funcional práctica y útil. Destaca el estilo puro y funcional. La inmutabilidad y la funcionalidad sin efectos secundarios están en el corazón de la filosofía de diseño de Ramda. Este enfoque puede ayudarlo a escribir código simple y elegante.





Fuentes ramda



Instalación



yarn add ramda


Solicitud



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


Ejemplos de código






6. Depurar



Debug es una pequeña utilidad de depuración de JavaScript modelada a partir de la técnica de depuración de Node.JS.





Fuentes de depuración



Instalación



yarn add debug


Solicitud



Debug proporciona una función. Simplemente pase el nombre de su módulo a esta función y devolverá una versión decorada console.errorpara pasar declaraciones de depuración.



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


Muestra y oculta la salida de depuración de un módulo como un todo o partes de él.








7. Plano



Flat toma un objeto y lo aplana. También puede contraer un objeto separado por claves. [Nota. transl. - no solo un punto puede ser un separador].





Fuentes planas



Instalación



yarn add flat


Solicitud



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



El formato de intercambio de datos JSON5 es un superconjunto de JSON que tiene como objetivo aliviar algunas de las limitaciones de JSON ampliando su sintaxis para incluir algunas de las características de ECMAScript 5.1 .





Fuentes JSON5



Instalación



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


Solicitud



Preste atención a la extensión del archivo. JSON5 es un superconjunto, una extensión 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 es una gran herramienta para evitar errores y establecer estándares de codificación para los equipos de desarrollo. ESLint es una herramienta para identificar y representar patrones que se encuentran en el código ECMAScript / JavaScript.





Fuentes de ESLint



Instalación y aplicación



yarn add eslint


Luego configure el archivo de configuración:



./node_modules/.bin/eslint --init


Después de eso, puede ejecutar ESLint en cualquier archivo o directorio, por ejemplo:



./node_modules/.bin/eslint yourfile.js


Documentación con muchos ejemplos de puesta en marcha y configuración.






10. PM2



PM2 es un administrador de procesos de producción con equilibrador de carga integrado. Le permite mantener las aplicaciones ejecutándose en todo momento, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de administración del sistema.





Fuentes pm2



Instalación



yarn add global pm2


Lanzamiento de la aplicación



Puede ejecutar cualquier aplicación (Node.js, Python, Ruby, binarios, $PATHetc.) de esta manera:



pm2 start app.js


Su aplicación ahora se ejecuta bajo el control de un demonio y se supervisa y mantiene continuamente. Obtenga más información sobre la gestión de procesos, inicio rápido .



Y así es como puede enumerar todas las aplicaciones en ejecución:



pm2 ls






Consulte la documentación oficial para obtener una lista completa de características y capacidades.






11. Casco



Helmet ayuda a proteger las aplicaciones express a través de encabezados HTTP. No es una solución milagrosa, pero puede ayudar.





Fuentes de cascos



Instalación



yarn add helmet


Solicitud



Helmetestá escrito en estilo Connect y es compatible con marcos como Express . Si necesita el apoyo de Koa, consulte koa-helmet.)



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


La función del casco es una envoltura de 11 middleware más pequeños. En otras palabras, 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. Compresión



La compresión es una herramienta de compresión de datos.





Fuentes de compresión



Instalación



yarn add compression


Solicitud



Cuando use este módulo junto con express, o connectsimplemente llame compression()al middleware. Las solicitudes que pasan por el middleware se comprimirán.



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


¿Qué herramientas usas para trabajar con NodeJS?



imagen


Descubra los detalles de cómo obtener una profesión de alto perfil desde cero o subir de nivel en habilidades y salario tomando cursos en línea de SkillFactory:





E







All Articles