{"id":1910,"date":"2015-11-10T11:00:21","date_gmt":"2015-11-10T10:00:21","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1910"},"modified":"2015-11-10T10:31:11","modified_gmt":"2015-11-10T09:31:11","slug":"integrando-grunt-y-bower-en-visual-studio-2013","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/","title":{"rendered":"Integrando Grunt y Bower en Visual Studio 2013"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1917\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png\" alt=\"grunt-y-bower\" width=\"448\" height=\"135\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png 448w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower-300x90.png 300w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><\/a>Con el auge de un servidor como NodeJS se ha propiciado la aparici\u00f3n de diversas herramientas que son de obligado uso para los especialistas en el Front-End. Estas herramientas que est\u00e1n en boca de casi todo el mundo son Bower, Grunt o Gulp. La salida de<strong> Visual Studio 2015 propicia un cambio en el marco para los desarrolladores de .NET<\/strong>. \u00bfEl motivo? Nuestro IDE favorito, Visual Studio en la versi\u00f3n 2015, ya soporta de forma nativa estas herramientas (Bower,Grunt o Gulp) y como una extensi\u00f3n m\u00e1s el uso de estas herramientas de FrontEnd. Esto hace\u00a0que una de las extensiones m\u00e1s utilizadas de <a href=\"http:\/\/vswebessentials.com\/\" target=\"_blank\">Visual Studio<\/a> en la nueva versi\u00f3n carezca de sentido.<br \/>\nPara los desarrolladores de SharePoint la nueva versi\u00f3n de Visual Studio no tiene mejoras sustanciales (salvo el uso de estas herramientas de FrontEnd) y en los que no tiene versi\u00f3n de extensiones indispensables como son las <a href=\"https:\/\/cksdev.codeplex.com\/\" target=\"_blank\">CKS Dev<\/a>. <strong>Visual Studio 2013 es la opci\u00f3n m\u00e1s estable y m\u00e1s adecuada para los desarrollos OnPremise<\/strong> (mientras no salga la nueva versi\u00f3n de SharePoint 2016 y el SDK est\u00e9 integrado con el IDE). En este art\u00edculo, vamos a ver como poder utilizar estas herramientas en Visual Studio 2013.<!--more--><\/p>\n<h2>\u00bfQu\u00e9 es Bower y qu\u00e9 es Grunt?<\/h2>\n<p>Antes de empezar a ver c\u00f3mo utilizar estas herramientas, es casi obligatorio una peque\u00f1a introducci\u00f3n a ellas.<\/p>\n<h3>Bower<\/h3>\n<p>Podemos decir que es un gestor de paquetes de las librer\u00edas JavaScript, algo similar a Nuget, pero con la ventaja de que se puede utilizar en todas las plataformas. \u00a0A d\u00eda de hoy, no hace nada que no haga Nuget, pero en un entorno en el que cada vez se quieren unir a m\u00e1s desarrolladores, Microsoft ha optado por adoptar las herramientas m\u00e1s utilizadas por los FrontEnd.<\/p>\n<h3>Grunt<\/h3>\n<p>Es un corredor o ejecutor de tareas Open Source\u00a0para Javascript. En\u00a0Grunt podemos\u00a0ejecutar casi cualquier tarea que puedas definir de manera programada, incluso gran parte de las tareas comunes conforman ahora la comunidad de <a href=\"http:\/\/gruntjs.com\/plugins\">plugins<\/a> de grunt, entre ellos podr\u00e1s encontrar minificadores y compresores de c\u00f3digo, convertidores de un lenguaje a otro (como SASS a CSS), ejecuci\u00f3n de pruebas, validadores, rutinas de conexi\u00f3n a servidores, instalaci\u00f3n de dependencias especiales, y mucho m\u00e1s.\u00a0Es una herramienta muy utilizada en el desarrollo de aplicaciones web, ya que existen muchas tareas predefinidas y repetitivas que un desarrollador debe llevar a cabo para lograr optimizar el software y convertirlo en una pieza de calidad que siga los est\u00e1ndares de la web con el menor esfuerzo posible.<\/p>\n<h2>Requisitos Previos<\/h2>\n<p>Para poder utilizar Grunt o Bower dentro de Visual Studio, en primer lugar <strong>tenemos que tener instalado <a href=\"https:\/\/git-scm.com\/download\/win\" target=\"_blank\">Git<\/a>.\u00a0<\/strong>Es necesario Git porque para Bower tiene una dependencia y sino no se puede utilizar. Una vez instalado hay que asegurarse que la ruta de Git est\u00e1 dentro del Path de Windows.<\/p>\n<p>En segundo lugar, instalaremos <a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\">NodeJS<\/a>. Para quien no conozca nada sobe NodeJS \u00a0una definici\u00f3n breve es la que nos ofrece la <a href=\"https:\/\/es.wikipedia.org\/wiki\/Node.js\" target=\"_blank\">Wikipedia<\/a>:<\/p>\n<blockquote><p>Es un entorno en tiempo de ejecuci\u00f3n multiplataforma, de c\u00f3digo abierto, para la capa del servidor (pero no limit\u00e1ndose a ello) basado en el lenguaje de programaci\u00f3n EcmaScript<\/p><\/blockquote>\n<p>Una vez instalado NodeJS, abrimos la consola de NodeJS e instalaremos Bower y Grunt para ello pondremos las siguientes instrucciones:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnpm install -g grunt-cli\r\nnpm install -g bower\r\n<\/pre>\n<p>NPM es el gestor de instalar paquetes dentro de NodeJS y lo que hacemos con estas instrucciones es instalarnos estos paquetes dentro de NodeJS y poder y utilizarlo. Por un lado el parametro -g indica que la instalaci\u00f3n sea de forma global.<\/p>\n<p>Instalaremos las siguientes extensiones de Visual Studio:<\/p>\n<ul>\n<li><a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/8e1b4368-4afb-467a-bc13-9650572db708\" target=\"_blank\">Task Runner Explorer<\/a><\/li>\n<li><a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/dcbc5325-79ef-4b72-960e-0a51ee33a0ff\" target=\"_blank\">Grunt Launcher<\/a><\/li>\n<li><a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/65748cdb-4087-497e-a394-2e3449c8e61e\" target=\"_blank\">Package Intellisense<\/a><\/li>\n<\/ul>\n<h1>Para poder utilizar Bower<\/h1>\n<p>Creamos\u00a0un fichero bower.json dentro de la raiz de la soluci\u00f3n, como por ejemplo este:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;name&quot;: &quot;Intranet Encamina&quot;,\r\n  &quot;private&quot;: true,\r\n  &quot;dependencies&quot;: {\r\n    &quot;bootstrap&quot;: &quot;3.0.0&quot;,\r\n    &quot;bootstrap-touch-carousel&quot;: &quot;0.8.0&quot;,\r\n    &quot;hammer.js&quot;: &quot;2.0.4&quot;,\r\n    &quot;jquery&quot;: &quot;2.1.4&quot;,\r\n    &quot;jquery-validation&quot;: &quot;1.11.1&quot;,\r\n    &quot;jquery-validation-unobtrusive&quot;: &quot;3.2.2&quot;\r\n  }\r\n}\r\n<\/pre>\n<p>Lo que indica este fichero Json es similar a los packages de Nuget. Se indica el nombre de paquete que se va a utilizar y la versi\u00f3n de la misma. Ahora bien para poder ejecutarlo desde dentro de Visual Studio ser\u00e1 necesario pulsar bot\u00f3n derecho sobre este fichero y visualizaremos una imagen como la siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/blob.devkimchi.com\/devkimchiwp\/2015\/01\/bower-01.png\" alt=\"\" width=\"685\" height=\"216\" \/><\/p>\n<h1>C\u00f3mo utilizar Grunt<\/h1>\n<p>Para que funcione Grunt es necesario dos archivos: package.json y \u00a0gruntfile.js. El archivo package.json tiene los paquete npm necesarios para poder utilizar grunt, y dentro del fichero GruntFile.js indicaremos todas las tareas que vamos a utilizar dentro de nuestro proyecto, como por ejemplo que se compruebe que la sintaxis JavaScript sea correcta, minificar los css, js, etc. Cabe mencionar que Grunt solamente es un paquete dentro de Node y que se complementa con otros paquetes como Grunt-Watch, etc..<\/p>\n<p>Para partir de unos ficheros m\u00ednimos podemos optar por utilizar los existentes en el siguiente proyecto de Git. Para ello, podemos utilizar esta instrucci\u00f3n:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ngit clone --progress -v &quot;https:\/\/github.com\/gruntjs\/grunt-init-gruntfile.git&quot; &quot;%USERPROFILE%.grunt-initgrunt-init-gruntfile&quot;\r\n<\/pre>\n<p>A continuaci\u00f3n dentro de la carpeta donde tenemos el proyecto ejecutamos la siguiente instrucci\u00f3n:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ngrunt-init grunt-init-gruntfile\r\n<\/pre>\n<p>Con esto ya disponemos de un fichero package.json y gruntfile dentro de nuestro proyecto. A continuaci\u00f3n se agrega a nuestra proyecto de Visual Studio.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/blob.devkimchi.com\/devkimchiwp\/2015\/01\/grunt-init-03.png\" alt=\"\" width=\"268\" height=\"371\" \/><\/p>\n<p>A continuaci\u00f3n, de la misma forma que hemos realizado con bower, seleccionamos el fichero package.json pulsamos bot\u00f3n derecho y tendremos una opci\u00f3n para poder instalar los paquetes NPM necesarios dentro de nuestra aplicaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blob.devkimchi.com\/devkimchiwp\/2015\/01\/npm-package-install-01.png\" alt=\"\" width=\"654\" height=\"202\" \/><\/p>\n<p>Ahora queda la forma en la que tenemos que configurar los procesos que necesitamos. En este caso, vamos a validar que la sintaxis cumpla con sus necesidades:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nmodule.exports = function(grunt) {\r\n\r\n  grunt.initConfig({\r\n    jshint: {\r\n      files: &#x5B;'Gruntfile.js', 'src\/**\/*.js', 'test\/**\/*.js'],\r\n      options: {\r\n        globals: {\r\n          jQuery: true\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      files: &#x5B;'&amp;amp;lt;%= jshint.files %&amp;amp;gt;'],\r\n      tasks: &#x5B;'jshint']\r\n    }\r\n  });\r\n\r\n  grunt.loadNpmTasks('grunt-contrib-jshint');\r\n  grunt.loadNpmTasks('grunt-contrib-watch');\r\n\r\n  grunt.registerTask('default', &#x5B;'jshint']);\r\n\r\n};\r\n<\/pre>\n<h3>\u00bfC\u00f3mo Funciona?<\/h3>\n<p>En un lado indicamos los par\u00e1metros de configuraci\u00f3n. Para ello, hay indicarlos dentro del m\u00e9todo initConfig. A continuaci\u00f3n indicamos la carga de los paquetes NPM que vamos a utilizar, y finalmente registraremos las tareas que vamos a utilizar. Una vez tengamso definidas las tareas, haremos uso del plugin instalado Task Runner en el que visualizaremos todas estas tareas e indicaremos cuando hacerlas. Por ejemplo, siempre que realice una compilaci\u00f3n quiero validar el JavaScript y, en caso de fallo, que no compile de una forma similar a lo que se hace en otros lenguajes de Programaci\u00f3n como C#.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blob.devkimchi.com\/devkimchiwp\/2015\/01\/trx-01.png\" alt=\"\" width=\"479\" height=\"335\" \/><\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Est\u00e1 claro que muchas veces es necesario utilizar las \u00faltimas herramientas (algo que hace muy apasionante nuestro d\u00eda a d\u00eda). Sin embargo, en muchas ocasiones no se pueden utilizar por diversos inconvenientes.<\/p>\n<p>Una de las ventajas que nos proporciona Visual Studio es su <strong>posibilidad de extenderse.<\/strong> Como has podido observar en este ejemplo, utilizar alguna de las principales novedades en Visual Studio 2015 se puede realizar gracias a la Comunidad .NET en versiones anteriores. Esto propicia que no tengamos excusa para utilizar las mejores herramientas posibles dentro de nuestra d\u00eda a d\u00eda. Pong\u00e1moslo en pr\u00e1ctica \ud83d\ude09<\/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>Con el auge de un servidor como NodeJS se ha propiciado la aparici\u00f3n de diversas herramientas que son de obligado uso para los especialistas en el Front-End. Estas herramientas que est\u00e1n en boca de casi todo el mundo son Bower, &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/\">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":[2,5,7,100],"tags":[163,160,32],"class_list":["post-1910","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","category-desarrollo","category-entorno","category-javascript-2","tag-frontend","tag-nodejs","tag-visual-studio"],"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>Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint<\/title>\n<meta name=\"description\" content=\"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013\" \/>\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\/integrando-grunt-y-bower-en-visual-studio-2013\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.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\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Integrando Grunt y Bower en Visual Studio 2013\",\"datePublished\":\"2015-11-10T10:00:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/\"},\"wordCount\":1267,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/11\\\/grunt-y-bower.png\",\"keywords\":[\"frontend\",\"nodejs\",\"visual studio\"],\"articleSection\":[\"buenas practicas\",\"desarrollo\",\"entorno\",\"javascript\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/\",\"name\":\"Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/11\\\/grunt-y-bower.png\",\"datePublished\":\"2015-11-10T10:00:21+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/integrando-grunt-y-bower-en-visual-studio-2013\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/11\\\/grunt-y-bower.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/11\\\/grunt-y-bower.png\",\"width\":448,\"height\":135},{\"@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":"Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint","description":"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013","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\/integrando-grunt-y-bower-en-visual-studio-2013\/","twitter_card":"summary_large_image","twitter_title":"Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint","twitter_description":"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Integrando Grunt y Bower en Visual Studio 2013","datePublished":"2015-11-10T10:00:21+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/"},"wordCount":1267,"commentCount":0,"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png","keywords":["frontend","nodejs","visual studio"],"articleSection":["buenas practicas","desarrollo","entorno","javascript"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/","url":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/","name":"Integrando Grunt y Bower en Visual Studio 2013 - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png","datePublished":"2015-11-10T10:00:21+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"En este articulo vamos a ver como podemos utilizar Grunt y Gulp dentro de Visual Studio 2013","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/integrando-grunt-y-bower-en-visual-studio-2013\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/grunt-y-bower.png","width":448,"height":135},{"@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\/1910","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=1910"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1910\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}