"El diseño es el embajador silencioso de tu marca"
- Paul Brand

Crear generadores en Yeoman

El uso de los generadores en Yeoman es donde reside la verdadera potencia de esta herramienta para hacer scaffolding.

Si necesitas refrescar información en esta entrada explicaba que es Yeoman.

De la misma manera que tenemos a nuestra disposición una gran cantidad de generadores hechos por otros programadores y que cubren la mayor parte de las necesidades que tengamos, tambien podemos encontrarnos en un escenario donde la tarea es tan específica que tenemos que programar nuestro propio generador.

Aunque siempre hablamos de hacer scaffolding de un proyecto podemos usar Yeoman para automatizar tareas repetitivas donde tenemos que crear siempre la misma estructura de carpetas y archivos con ciertas variaciones.

Yo hoy os voy a explicar los pasos que sigo para crear un generador y vereis como es muy sencillo.

Crear un generador en Yeoman

La manera más sencilla y la que yo sin duda recomiendo es usar este generador.

Como bien indica en su página, se trata de un generador que sirve para crear generadores, parece una broma pero es así.

Y tiene sentido que lo sea, un generador de Yeoman es un proyecto de nodeJS, y como Yeoman es una herramienta para hacer el scaffolding de un proyecto, sería un delito que para crear un generador te tuvieras que montar la estructura a mano.

Para instalar el generador en cuestión tenemos que hacerlo mediante npm, lo vamos a instalar como global para que este disponible siempre, asi que introducimos:

Y listo, ya tenemos nuestro generador disponible, si quieres ver el listado solo tienes que escribir ‘yo’ en la consola, y si estas en la carpeta donde quieres arrancar tu nuevo generador escribes:

Voy a enseñaros como lo hago y el resultado en la carpeta para que lo tengais claro.

Como se puede ver simplemente tenemos que contestar a una serie de preguntas algunas de las cuales ya vienen sugeridas, como por ejemplo el nombre del generador que sugiere el de la carpeta, etc.

Una vez todo esta contestado tenemos la estructura que ha creado a la derecha, si quieres ver reflejada toda esa información que has cubierto mira el package.json, está todo ahí y si quieres modificar algo no hay problema.

¿Cómo funciona el generador?

Ahora tenemos el proyecto creado, pero obviamente no sabemos que ficheros tocar en toda esa estructura ni que cosas podemos o no podemos hacer.

No tengo intención de explicar todas las posibilidades que tenemos, porque para eso ya hay una documentación oficial en la página que por cierto os dejo aquí.

Pero lo más básico es deciros que toda la magia se hace en el fichero:

generators/app/index.js

Ahí es donde tenemos que programar, si lo abrimos veremos que es muy básico.

Como es un proyecto de node tenemos que tener cierta idea de como funciona, básicamente exporta un módulo que extiende de la clase ‘Generator’ que importa arriba.

Si no sabes que es eso de exportar e importar módulos te recomiendo que eches un vistazo a la documentación de Node y al estandar CommonJS.

Dentro de este módulo hay ciertas funciones como son prompting, writing e install.

Existen más, si las quieres ver investiga sobre el ciclo de vida de un generador en la documentación, sobre las que tenemos decir solo que:

  • prompting sirve para definir las preguntas que hace el generador al comenzar, lo que respondamos será guardado en el objeto this.options.
  • writing es el punto donde en base a lo que responda el usuario creamos la estructura de archivos y directorios.
  • install sirve para instalar las dependecias del proyecto que acabamos de levantar de forma automática (intentará buscar en npm y bower).

¿Como damos de alta el generador?

Aunque el proyecto esta creado, tenemos que darlo de alta en nuestro sistema para poder usarlo, para ello usamos este comando.

Con ello estamos declarando en node como global un proyecto local, de forma que lo tenemos disponible siempre que queramos.

Como el nombre nuestro generador es ‘generator-oscarlijo’, para poder usarlo solo tendremos que escribir:

Crear generadores en Yeoman es muy sencillo y además puede ahorrarnos mucho tiempo en nuestros desarrollos.

The following two tabs change content below.
Especialista en diseño web responsive, programador html5, css3, jquery, php y java.

Latest posts by Óscar Lijó (see all)