{"id":1814,"date":"2015-10-13T10:00:30","date_gmt":"2015-10-13T09:00:30","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1814"},"modified":"2015-10-13T09:32:26","modified_gmt":"2015-10-13T08:32:26","slug":"yeuman-que-es-y-como-podemos-utilizarlo","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/","title":{"rendered":"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png\" alt=\"\" width=\"650\" height=\"200\" \/>Dentro de los desarrollos Web cada vez son m\u00e1s conocidas herramientas como Bower, NPM, Node, Grunt, etc. Y, dentro de estas herramientas, Yeoman se est\u00e1 popularizando cada vez m\u00e1s.<\/p>\n<h2>\u00bfQu\u00e9 es Yeoman?<\/h2>\n<p><!--more--><\/p>\n<p>Yeoman es un creador de proyectos, de tal forma que evita a los desarrolladores los problemas de crear un proyecto de inicio. Dentro de este creador de proyectos, se introducen las lecciones aprendidas previamente, as\u00ed como las buenas pr\u00e1cticas de los mismos. Por ejemplo, si utilizamos una determinada librer\u00eda (como puede ser PnP), cuando tenemos creado el proyecto esta librer\u00eda ya est\u00e1 disponible.<\/p>\n<p>En la pr\u00e1ctica podemos definir Yeoman como un \u00abplugin\u00bb que se ejecuta dentro de\u00a0<a href=\"https:\/\/nodejs.org\">NodeJs<\/a>\u00a0por el cual podemos crear proyectos de los principales proyectos Web, como pueda ser una aplicaci\u00f3n vNext, una SPA basada en el framework JavaScript que decidamos utilizar en nuestro desarrollo (ReactJS, AngularJS, Backbone, etc..). De la misma forma, estas plantillas pueden utilizar otras herramientas de FrontEnd como Grunt, Bower o npm.<\/p>\n<h2>\u00bfC\u00f3mo podemos utilizarlo?<\/h2>\n<p>Est\u00e1 claro que hay multitud de plantillas, incluso hay una plantilla para realizar <a href=\"https:\/\/www.npmjs.com\/package\/generator-office\" target=\"_blank\">Add-In de Office<\/a>, pero en <a href=\"http:\/\/www.encamina.com\" target=\"_blank\">ENCAMINA<\/a>\u00a0lo estamos utilizando para tener una serie de plantillas dependiendo del proyecto que llevemos a cabo. Por ejemplo, si tenemos un proyecto de un sitio de Colaboraci\u00f3n de SharePoint Onpremise, tenemos una plantilla Yeoman que crea una soluci\u00f3n de Visual Studio con los proyectos que creemos que deben tener un proyecto de tipo:<\/p>\n<ul>\n<li>Proyecto de Despliegue (PowerShell)<\/li>\n<li>Proyecto de Clases de Modelo<\/li>\n<li>Proyecto de Clase de Servicio<\/li>\n<li>Proyecto de Test Unitarios<\/li>\n<li>Proyecto de SharePoint<\/li>\n<\/ul>\n<p>Adem\u00e1s, dentro de estos proyectos tienen las librer\u00edas necesarias en un principio. Por ejemplo, si para el desarrollo en la parte cliente necesitamos tener descargado JQuery pues dentro del proyecto correspondiente estar\u00e1 cargado. O si en el proyecto de Test Unitarios utilizamos un determinado Inyector de Dependencias pues ya lo tenemos descargado.<\/p>\n<p>La <strong>principal ventaja<\/strong> de la utilizaci\u00f3n de Yeoman es que podemos estandarizar los proyectos que llevamos desarrollando entre manos. Independientemente de que lo realice un equipo de desarrollo u otro, ambos utilizar\u00e1n las mismas herramientas\/utilidades\/librer\u00edas con lo que conseguimos que todo el equipo crezca en una misma direcci\u00f3n.<\/p>\n<h2>\u00bfC\u00f3mo creamos la plantilla?<\/h2>\n<p>Como preriquisitos para empezar a crear la plantilla debemos tener instalado NodeJS, y dentro de node tener instalado \u00abyo\u00bb. Para instalar yo basta con el siguiente comando:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnpm install -g yo\r\n<\/pre>\n<p>El siguiente paso que vamos a realizar es crearnos una carpeta a la que le pondremos como nombre \u00abGenerator\u00bb (el nombre de nuestra plantilla). En nuestro caso \u00abencamina sharepoint\u00bb. A continuaci\u00f3n, tendremos una plantilla generator, que por un lado contiene un fichero index.js y, por otro lado,\u00a0tiene una carpeta llamada \u00abTemplates\u00bb (en la que tenemos la plantilla que queremos replicar).<\/p>\n<p>Dentro de la carpeta \u00abTemplates\u00bb tendremos\u00a0nuestra soluci\u00f3n de Visual Studio que deseamos replicar. Dentro de esta soluci\u00f3n, modificamos el fichero de soluci\u00f3n, cambiando\u00a0el nombre del proyecto por una variable projectName (de tal forma que cuando creemos el nuevo proyecto, la soluci\u00f3n contenga los proyectos con su nuevo nombre).<br \/>\n<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/ProyectoYeoman.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1818 size-full\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/ProyectoYeoman-e1444658304205.jpg\" alt=\"ProyectoYeoman\" width=\"680\" height=\"129\" \/><\/a><\/p>\n<p>El siguiente paso es crear el fichero index.js. Dentro de este fichero vamos a extender el funcionamiento por defecto de Yeoman y lo adaptaremos\u00a0a nuestras necesidades. Para ello, podemos utilizar el siguiente ejemplo:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n'use strict';\r\nvar yeoman = require('yeoman-generator');\r\nvar chalk = require('chalk');\r\nvar yosay = require('yosay');\r\nvar rename = require('gulp-rename');\r\nvar mkdirp = require('mkdirp');\r\n\r\nmodule.exports = yeoman.generators.Base.extend({\r\n  prompting: function () {\r\n    var done = this.async();\r\n\r\n    \/\/ Have Yeoman greet the user.\r\n    this.log(yosay(\r\n      'Welcome to the rad ' + chalk.red('Encamina Sharepoint') + ' generator!'\r\n    ));\r\n\r\n    var prompts = &#x5B;{\r\n      name: 'applicationName',\r\n      message: 'What\\'s the name of your SharePoint application?',\r\n      default: &quot;Encamina.Project.Template&quot;\r\n    }];\r\n\r\n    this.prompt(prompts, function (props) {\r\n      this.props = props;\r\n      \/\/ To access props later use this.props.someOption;\r\n\r\n      done();\r\n    }.bind(this));\r\n  },\r\n  writing: {\r\n    app: function () {\r\n      var directories = &#x5B;&quot;Service&quot;, &quot;Model&quot;, &quot;SP&quot;, &quot;Test&quot;, &quot;WCF&quot;];\r\n      var contexto = this;\r\n      var appName = {projectName: this.props.applicationName};\r\n        \r\n        directories.forEach(function(directory) {\r\n            var projectName = contexto.props.applicationName + &quot;.&quot; + directory;\r\n            \r\n            var projectInfo = {\r\n                directory: directory,\r\n                projectName : projectName,\r\n                pathProjectFolder: contexto.destinationRoot() + &quot;\/&quot; + projectName,\r\n                pathTemplateFolder: 'Encamina.Project.Template.' + directory,\r\n                appName: appName\r\n            }\r\n                        \r\n            mkdirp(projectInfo.pathProjectFolder);                        \r\n            mkdirp(projectInfo.pathProjectFolder + &quot;\/Properties&quot;, function() {\r\n                contexto.fs.copyTpl(contexto.templatePath(projectInfo.pathTemplateFolder + '\/Properties\/AssemblyInfo.cs'), \r\n                contexto.destinationPath() + &quot;\\\\&quot; + projectInfo.projectName + &quot;\\\\Properties\\\\AssemblyInfo.cs&quot;, \r\n                projectInfo.appName);    \r\n            })            \r\n            mkdirp(projectInfo.pathProjectFolder + &quot;\/bin&quot;);                        \r\n            mkdirp(projectInfo.pathProjectFolder + &quot;\/obj&quot;);            \r\n        \r\n            contexto.fs.copyTpl(contexto.templatePath(projectInfo.pathTemplateFolder + '\/' + projectInfo.pathTemplateFolder +'.csproj'), \r\n                contexto.destinationPath() + &quot;\\\\&quot; + projectInfo.projectName + &quot;\\\\&quot; + projectInfo.projectName + &quot;.csproj&quot;, \r\n                projectInfo.appName);    \r\n                                    \r\n            createProjectTypeSpecificItems(contexto, projectInfo);\r\n        });\r\n                \r\n        this.fs.copyTpl(this.templatePath('Encamina.Project.Template.sln'), \r\n                    this.destinationPath() + &quot;\\\\&quot; + this.props.applicationName + &quot;.sln&quot;, \r\n                    appName);\r\n        \r\n    }\r\n  },\r\n  install: function () {\r\n    this.installDependencies();\r\n  }\r\n});\r\n<\/pre>\n<p>Para poder utilizarlo independientemente de la ruta donde nos encontremos, deberemos introducir el siguiente comando:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnpm link\r\n<\/pre>\n<p>Ejecutamos desde cualquier consola node yo encamina-sharepoint se muestra la siguiente pantalla:<br \/>\n<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/Youman.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1822\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/Youman.png\" alt=\"Yeuman\" width=\"641\" height=\"423\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/Youman.png 641w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/10\/Youman-300x198.png 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/a><\/p>\n<h2>Yeoman vs Templates Visual Studio<\/h2>\n<p>Anteriormente a la existencia de Yeoman, la opci\u00f3n escogida era crear varios templates de Visual Studio y, de esta forma, instalarla y distribuirla en cada equipo de desarrollo. Ahora bien, si con los templates cumpl\u00eda con su misi\u00f3n&#8230; \u00bfPor qu\u00e9 utilizar Yeoman?<\/p>\n<p>La <strong>primera ventaja de Yeoman<\/strong> es que <strong>todos los equipos de desarrollo lo pueden utilizar<\/strong>. Puede haber equipos que desarollen en Java, o aplicaciones multiplataformas ya sean Web o m\u00f3vil. Yeoman es una herramienta que la pueden utilizar todos los equipos y de esta forma se estandariza la creaci\u00f3n.<\/p>\n<p><strong>Otra ventaja es la distribuci\u00f3n.<\/strong>\u00a0Con NodeJS podemos crear un repositorio central dentro de la organizaci\u00f3n para poder tener todos los templates que vamos a utilizar. Otra opci\u00f3n es tener un \u00abnpm\u00bb privado y alojar all\u00ed las plantillas. Con los Templates habr\u00eda\u00a0que hacer una regla desde IT para que cada que vez que se instale Visual Studio se instalen estos templates \u00f3 bien que el propio desarrollador lo instale cuando considere oportuno (esto sin tener en cuenta que muchas veces desarrollamos en una m\u00e1quina virtual que no esta dentro de la organizaci\u00f3n con lo cual las reglas de IT no se cumplen).<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El desarrollo multiplataforma cada vez esta m\u00e1s presente. La unificaci\u00f3n\/estandarizaci\u00f3n de las herramientas es un echo cada vez\u00a0m\u00e1s presente. Mi recomendaci\u00f3n es utilizar estas herramientas y ver en qu\u00e9 nos pueden ayudar a mejorar nuestro proceso en el desarrollo software. Si es algo que mejora lo que utilizamos ahora mismo, deberemos incorporarlo a este ciclo. <strong>Yeoman es una herramienta muy \u00fatil<\/strong> y que cumple de sobra\u00a0la tarea de estandarizar la plantilla de los proyectos que desarrollamos.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Dentro de los desarrollos Web cada vez son m\u00e1s conocidas herramientas como Bower, NPM, Node, Grunt, etc. Y, dentro de estas herramientas, Yeoman se est\u00e1 popularizando cada vez m\u00e1s. \u00bfQu\u00e9 es Yeoman?<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[160,161],"class_list":["post-1814","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-nodejs","tag-youman"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Dentro de los desarrollos Web cada vez son m\u00e1s conocidas herramientas como Bower, NPM, Node, Grunt, etc. Y, dentro de estas herramientas, Yeoman se est\u00e1 popularizando cada vez m\u00e1s. \u00bfQu\u00e9 es Yeoman?\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo\",\"datePublished\":\"2015-10-13T09:00:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/\"},\"wordCount\":1162,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/yeoman\\\/media\\\/master\\\/optimized\\\/yeoman-masthead.png\",\"keywords\":[\"nodejs\",\"youman\"],\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/\",\"name\":\"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/yeoman\\\/media\\\/master\\\/optimized\\\/yeoman-masthead.png\",\"datePublished\":\"2015-10-13T09:00:30+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/yeuman-que-es-y-como-podemos-utilizarlo\\\/#primaryimage\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/yeoman\\\/media\\\/master\\\/optimized\\\/yeoman-masthead.png\",\"contentUrl\":\"https:\\\/\\\/raw.githubusercontent.com\\\/yeoman\\\/media\\\/master\\\/optimized\\\/yeoman-masthead.png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/","twitter_card":"summary_large_image","twitter_title":"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint","twitter_description":"Dentro de los desarrollos Web cada vez son m\u00e1s conocidas herramientas como Bower, NPM, Node, Grunt, etc. Y, dentro de estas herramientas, Yeoman se est\u00e1 popularizando cada vez m\u00e1s. \u00bfQu\u00e9 es Yeoman?","twitter_image":"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo","datePublished":"2015-10-13T09:00:30+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/"},"wordCount":1162,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#primaryimage"},"thumbnailUrl":"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png","keywords":["nodejs","youman"],"articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/","name":"Yeoman: qu\u00e9 es y c\u00f3mo podemos utilizarlo - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#primaryimage"},"thumbnailUrl":"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png","datePublished":"2015-10-13T09:00:30+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/yeuman-que-es-y-como-podemos-utilizarlo\/#primaryimage","url":"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png","contentUrl":"https:\/\/raw.githubusercontent.com\/yeoman\/media\/master\/optimized\/yeoman-masthead.png"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1814"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1814\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}