Subgeneradores con Yeoman

por

YeomanEn el atículo anterior veíamos como crear nuestro propio generador desde cero. En esta ocasión vamos a ver como podemos crear subgeneradores para crear un sistema completo de generación de elementos y que, a la vez, sea muy intuitivo su uso.

Vamos a ver un ejemplo de uso para que podamos hacernos una idea de lo que queremos conseguir. El uso tradicional qe veíamos en el capitulo anterior es el siguiente:

	yo chekis-site

Sin embargo, nosotros podemos crear subgeneradores que englobamos bajo el mismo generador "chekis-site" del siguiente modo:

	yo chekis-site:page
	
	yo chekis-site:component
	
	yo chekis-site:layout

De esta forma, con un solo generador tendríamos otros 3 subgeneradores que nos ayudarían a crear una página nueva, un componente o una layout.

Para poder utilizar nuestro generador de esta forma debemos realizar unas pequeñas modificaciones de código de la siguiente forma. Tenemos que abrir el archivo /generator-chekis-site/generators/app/index.js y dentro de él escribir lo siguiente:

	module.exports = require('yeoman-generator').Base.extend({
		'initializing' : function () {
			this.composeWith('base-component:component');
			this.composeWith('base-component:layout');
			this.composeWith('base-component:page');
		}
	});

Solo debe haber este código dentro de index.js.

¿Y ahora como hacemos para crear los subgenerador? Pues muy sencillo, en la carpeta /generator-chekis-site/generators/ creamos 3 nuevas carpetas que se llamen igual que los subgeneradores que queremos crear: layout, page y component.

Dentro de cada carpeta añadimos un archivo index.js vacío y una carpeta /templates aunque esta última no la vayamos a usar por el momento.

Con esta sencilla estructura ya tenemos todo montado para poder hacer nuestros generadores y que funcionen bajo la sintaxis que hemos visto. Ahora ya solo nos quedaría completar cada uno de los index.js de cada generador con el código que deseemos al igula que hacíamos en el artículo anterior.

Espero que os haya podido ayudar.

COMENTARIOS

DEJA TU COMENTARIO