{"id":2551,"date":"2017-01-10T11:00:18","date_gmt":"2017-01-10T10:00:18","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=2551"},"modified":"2018-07-18T12:43:29","modified_gmt":"2018-07-18T10:43:29","slug":"spfx-anadiendo-tareas-gulp-al-proceso-compilacion","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/","title":{"rendered":"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-2553\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png\" alt=\"&#96;gulp\" width=\"960\" height=\"560\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png 960w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp-300x175.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp-768x448.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/>En este art\u00edculo, vamos a ver como podemos incluir nuestras tareas personalizadas dentro del proceso de Build. Para\u00a0 entender el contenido del mismo, es necesario conocer los ficheros que hay dentro de una <strong>soluci\u00f3n del SPFX (SharePoint Framework),<\/strong> para lo cual recomiendo leer <a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2016\/08\/30\/sharepoint-framework-entendiendo-la-solucion\/\" target=\"_blank\" rel=\"noopener\">este art\u00edculo previo<\/a>.<br \/>\n<!--more--><\/p>\n<p>El proceso de compilaci\u00f3n que trae por defecto el SharePoint Framework es el siguiente:<\/p>\n<ul>\n<li>Arranca el servidor<\/li>\n<li>Copia ficheros necesarios en el mismo<\/li>\n<li>Compila el <strong>SASS<\/strong><\/li>\n<li>Verifica la sintaxis del <strong>TypeScript<\/strong> con <strong>TSLint<\/strong><\/li>\n<li>Compila la soluci\u00f3n<\/li>\n<li>Copia los ficheros de recursos<\/li>\n<li>Configura<strong> WebPack<\/strong><\/li>\n<li>Modifica el fichero de manifiesto<\/li>\n<li>Arranca nuestra aplicaci\u00f3n<\/li>\n<\/ul>\n<p>Este proceso de serie es bastante completo. Puede cumplir con el d\u00eda a d\u00eda de muchos desarrolladores. Sin embargo, dependiendo del tipo de desarrollo que se lleve a cabo, es posible que te haga falta extenderlo. Por ejemplo, si utilizas templates html y no lo quieres incluir dentro del bundle, para que te funcione deber\u00e1s de <strong>copiar este template<\/strong> dentro del servidor.<\/p>\n<p>Otra tarea que podemos incluir dentro de nuestro proceso de compilaci\u00f3n, es la <strong>verificaci\u00f3n<\/strong> de nuestro HTML con herramientas como <a href=\"http:\/\/handlebarsjs.com\/\">Handlebars<\/a><\/p>\n<h2><strong>\u00bfC\u00f3mo lo extendemos?<\/strong><\/h2>\n<p>Las tareas de la Build que se utilizan en el <strong>SPFX<\/strong> implementan la siguiente interfaz:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nexport interface IExecutable {  \r\n  execute: (config: IBuildConfig)=&gt; Promise&lt;void&gt;;\r\n  name?: string;\r\n  isEnabled?: () =&gt; boolean\r\n  getNukeMatch?: (config: IBuildConfig, taskConfig?: {}) =&gt; string&#x5B;];\r\n}\r\n<\/pre>\n<ul>\n<li>Execute -&amp;amp;gt;\u00a0 Aqu\u00ed pondremos la l\u00f3gica que va a tener nuestra tarea personalizada.<\/li>\n<li>\u00a0\u00abname\u00bb -&amp;amp;gt; Pondremos el nombre de la tarea.<\/li>\n<li>getNukeMatch, devuelve un vector de ficheros que se deben de limpiar cuando se utiliza la tarea <strong>gulp nuke<\/strong>.<\/li>\n<\/ul>\n<p>Cuando tengamos definida nuestra tarea, el siguiente paso ser\u00e1 registrar nuestra tarea dentro del Pipeline de la Build. Para ello,\u00a0dentro del fichero gulpfile.js deberemos a\u00f1adir nuestra tarea utilizando la llamada build.rig.addBuildTastk().<\/p>\n<h2><strong>Un ejemplo pr\u00e1ctico<\/strong><\/h2>\n<p>Vamos a implementar una tarea que copie todo los templates de html que utilizamos en nuestros WebPart dentro del servidor NodeJS, para que cuando intentemos acceder a ellos no nos de error.<\/p>\n<p>En primer lugar, nos creamos un <strong>fichero javascript<\/strong> llamado copyTemplates.js. En este fichero a\u00f1adiremos el siguiente c\u00f3digo:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n'use strict';  \r\nvar error = require('@microsoft\/gulp-core-build').error,  \r\n  log = require('@microsoft\/gulp-core-build').log;\r\n\r\nvar CopyTemplates = {  \r\n  execute: (config) =&gt; {\r\n    return new Promise((resolve, reject) =&gt; {\r\n        var time= new Date();\r\n        var res = time.getDate();\r\n      log(`Starting subtask 'copyTemplates'...`);\r\n      config.gulp.src('.\/src\/webparts\/**\/*.html')\r\n        .pipe(config.gulp.dest('.\/temp\/'));      \r\n      log(`Finished subtask 'copyTemplates'... `);\r\n      resolve();\r\n    });\r\n  },\r\n  name: 'copytemplates'\r\n};\r\nexports.default = CopyTemplates;   \r\n<\/pre>\n<p>El c\u00f3digo anterior\u00a0es bastante simple, lo \u00fanico que hay que tener en cuenta, es utilizar el error y el log que te da el propio <strong>SPFX<\/strong>; aunque si lo prefer\u00eds, pod\u00e9is utilizar otras utilidades como <a href=\"https:\/\/www.npmjs.com\/package\/gulp-logger\" target=\"_blank\" rel=\"noopener\">gulp-logger<\/a>.<br \/>\nOtra de las cosas que hay que tener en cuenta a la hora de implementar la tarea, es<strong> incluir<\/strong> <strong>un Log<\/strong> de inicio y final de la misma (esto lo hacen las otras tareas y es recomendable, sobre todo\u00a0 de cara a seguir una estandarizaci\u00f3n de las mismas).<\/p>\n<p>Una vez tenemos la tarea, el siguiente paso es a\u00f1adirla dentro de nuestro <strong>pipeline<\/strong>. Este proceso ha sufrido algunos cambios desde la primera versi\u00f3n. Ahora mismo y tal como pone en esta\u00a0<a href=\"https:\/\/github.com\/SharePoint\/sp-dev-docs\/issues\/288\" target=\"_blank\" rel=\"noopener\">Issue ,\u00a0<\/a>se hace de la siguiente forma.<\/p>\n<p>Para ello, editamos el fichero gulpfile de la siguiente forma:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n'use strict';\r\nconst gulp = require('gulp');\r\nconst build = require('@microsoft\/sp-build-web');\r\nconst copytemplates = require('.\/copyTemplate');\r\nbuild.rig.addBuildTasks(copytemplates); \r\nbuild.initialize(gulp);\r\n<\/pre>\n<p>Tambi\u00e9n es posible <strong>a\u00f1adir las tareas directamente,<\/strong> sin la necesidad de cargar ning\u00fan fichero previo. No obstante, considero que por el mantenimiento y la legibilidad del c\u00f3digo, es mejor opci\u00f3n que escribirlo directamente en el propio fichero de gulpfile, aunque se puede hacer de la siguiente forma:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst gulp = require('gulp');\r\nconst build = require('@microsoft\/sp-build-web');\r\nconst firsttask = build.subTask('firsttask', (gulp, buildConfig, done) =&gt; {\r\n  \/\/ task code\r\n  return Promise.resolve();\r\n});\r\nconst secondtask = build.subTask('secondtask', (gulp, buildConfig, done) =&gt; {\r\n  \/\/ task code\r\n  return Promise.resolve();\r\n});\r\nbuild.rig.addBuildTasks(firsttask);\r\nbuild.rig.addBuildTasks(secondtask);\r\nbuild.initialize(gulp);\r\n<\/pre>\n<h2><strong>Conclusi\u00f3n<\/strong><\/h2>\n<p>Hemos visto que ahora mismo el desarrollador de SharePoint es un <strong>desarrollador Web<\/strong>, que debe de dominar todas las <strong>herramientas de Front-End<\/strong> para poder sacarle el m\u00e1ximo partido a este nuevo modelo de desarrollo.<\/p>\n<p>Uno de los aspectos m\u00e1s novedosos del <strong>SPFX,<\/strong> es la libertad para extenderlo seg\u00fan las necesidades de cada uno, as\u00ed como la extensi\u00f3n y utilizaci\u00f3n de las herramientas que el desarrollador escoja.<\/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>En este art\u00edculo, vamos a ver como podemos incluir nuestras tareas personalizadas dentro del proceso de Build. Para\u00a0 entender el contenido del mismo, es necesario conocer los ficheros que hay dentro de una soluci\u00f3n del SPFX (SharePoint Framework), para lo &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- 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":[180,157],"tags":[182,183,178],"class_list":["post-2551","post","type-post","status-publish","format-standard","hentry","category-spfx","category-typescript","tag-gulp","tag-officedev","tag-spfx"],"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>SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - 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=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"En este art\u00edculo, vamos a ver como podemos incluir nuestras tareas personalizadas dentro del proceso de Build. Para\u00a0 entender el contenido del mismo, es necesario conocer los ficheros que hay dentro de una soluci\u00f3n del SPFX (SharePoint Framework), para lo &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.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=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n\",\"datePublished\":\"2017-01-10T10:00:18+00:00\",\"dateModified\":\"2018-07-18T10:43:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/\"},\"wordCount\":797,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/01\\\/gulp.png\",\"keywords\":[\"gulp\",\"officedev\",\"spfx\"],\"articleSection\":[\"spfx\",\"typescript\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/\",\"name\":\"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/01\\\/gulp.png\",\"datePublished\":\"2017-01-10T10:00:18+00:00\",\"dateModified\":\"2018-07-18T10:43:29+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/01\\\/gulp.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2017\\\/01\\\/gulp.png\",\"width\":960,\"height\":560,\"caption\":\"`gulp\"},{\"@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":"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - 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":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/","twitter_card":"summary_large_image","twitter_title":"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - Desarrollando sobre SharePoint","twitter_description":"En este art\u00edculo, vamos a ver como podemos incluir nuestras tareas personalizadas dentro del proceso de Build. Para\u00a0 entender el contenido del mismo, es necesario conocer los ficheros que hay dentro de una soluci\u00f3n del SPFX (SharePoint Framework), para lo &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n","datePublished":"2017-01-10T10:00:18+00:00","dateModified":"2018-07-18T10:43:29+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/"},"wordCount":797,"commentCount":0,"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png","keywords":["gulp","officedev","spfx"],"articleSection":["spfx","typescript"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/","url":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/","name":"SPFX: A\u00f1adiendo tareas de Gulp al proceso de compilaci\u00f3n - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png","datePublished":"2017-01-10T10:00:18+00:00","dateModified":"2018-07-18T10:43:29+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/spfx-anadiendo-tareas-gulp-al-proceso-compilacion\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2017\/01\/gulp.png","width":960,"height":560,"caption":"`gulp"},{"@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\/2551","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=2551"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/2551\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=2551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=2551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=2551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}