10

Actualiza hapijs a su nueva dependencia en npm

Eduardo
eperedo
52273

Hace ya un tiempo que el creador de Hapi viene haciendo esfuerzos para poder dedicarle más tiempo al proyecto y poder seguir desarrollando este genial framework. Dentro de las muchas decisiones que se adoptaron, una de ellas fue el de “ordenar” la forma de distribuir hapi en npm.

Como ya vimos en el curso para instalar hapi era tan simple como hacer lo siguiente en la terminal

npm install hapi

Pero ahora hapi fue movido hacia su propia organización llamada hapi. Debido a esto ahora la forma de instalar hapi es la siguiente:

npm install @hapi/hapi

Si bien el nombre del package ha cambiado el API casi se ha mantenido igual. Si queremos hacer un hello world escribiríamos el siguiente código:

// El require ahora debe hacer referencia al nuevo nombre del packageconst Hapi = require('@hapi/hapi');

asyncfunctioninit() {
    const server = Hapi.server({
        port: 3000,
        host: 'localhost'
    });

   server.route({
      path: '/',
      method: 'GET',
      handler: () => {
        return'Hello World';
      }
   });

    await server.start();
    console.log('Server running on %s', server.info.uri);
}

process.on('unhandledRejection', (err) => {
    console.log(err);
    process.exit(1);
});

init();
  • El ecosistema Hapi

El equipo de Hapi ha desarrollado muchos otros packages que permiten extender las funcionalidades del framework, todos ellos han sido movidos a la nueva organización dentro de npm por lo que su uso también ha sido modificado. Por ejemplo si queremos agregar validaciones a nuestras rutas normalmente usamos Joi. Vamos a ver como debemos instalarlo ahora

npm install @hapi/joi

Al igual que con el framework el único cambio es el nombre de la organización al inicio @hapi/ mientras que su uso no sufre muchas alteraciones, veamos un ejemplo simple en el que validamos el parámetro name de una ruta

// notar el nombre del package con respecto al antiguoconst Joi = require('@hapi/joi');

server.route({
    method: 'GET',
    path: '/hello/{name}',
    handler: function (request, h) {
        return`Hello ${request.params.name}!`;
    },
    options: {
        validate: {
            params: Joi.object({
                name: Joi.string().min(3).max(10)
            })
        }
    }
});

En este caso validamos que nuestro parámetro name sea una cadena de texto con una longitud mínima de 3 y una máxima de 10.

  • Usar el nuevo package sin hacer cambios al código

Si ya tienes un proyecto con Hapi y tienes muchas referencias a sus módulos y cambiarlos te podría generar mucho tiempo puedes generar un alias en las dependencias de npm dentro del package.json para evitar dichas modificaciones.

"dependencies": {
    "hapi": "npm:@hapi/[email protected]"
}

Ahora cada vez que hagas un require(‘hapi’) automaticamente se hará referencia a require(’@hapi/hapi’). Puedes repetir lo mismo con los otros módulos del universo de Hapi.

  • Conclusiones

  • En este tutorial vimos la nueva forma de instalar Hapi usando su nuevo nombre de package en npm.

  • También usamos npm alias package para evitar hacer cambios en el código hacia el nuevo nombre del package.

Saludos!

Escribe tu comentario
+ 2