<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Blanca Azucena López Garduño</title>
    <description>The latest articles on DEV Community by Blanca Azucena López Garduño (@blankazucenalg).</description>
    <link>https://dev.to/blankazucenalg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F25351%2F41246df9-c5fc-4c7c-8f94-0c4e6d5ef2b9.jpg</url>
      <title>DEV Community: Blanca Azucena López Garduño</title>
      <link>https://dev.to/blankazucenalg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blankazucenalg"/>
    <language>en</language>
    <item>
      <title>Trabajo remoto, la guía definitiva</title>
      <dc:creator>Blanca Azucena López Garduño</dc:creator>
      <pubDate>Thu, 16 Apr 2020 22:44:06 +0000</pubDate>
      <link>https://dev.to/blankazucenalg/trabajo-remoto-la-guia-definitiva-4e55</link>
      <guid>https://dev.to/blankazucenalg/trabajo-remoto-la-guia-definitiva-4e55</guid>
      <description>&lt;p&gt;El trabajo remoto siempre implica un reto que pone a prueba a los equipos, donde lo más importante es mantener la comunicación efectiva para los miembros del equipo. Esta guía intenta solventar los principales retos a los que nos enfrentamos día a día.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comunicación general
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;La mala comunicación afecta la confianza&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La comunicación debe ser &lt;strong&gt;clara y concisa&lt;/strong&gt;, evita ambigüedades.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hazle saer a tu equipo cuando estás lejos de la computadora (AFK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ten en cuenta las diferentes zonas horarias.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adopte la comunicación asíncrona como primer medio&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Toda comunicación debe incluir siempre un componente &lt;strong&gt;escrito&lt;/strong&gt;, así cualquier persona puede ponerse al tanto sin importar la situación. Esto es realmente importante en la gestión de tareas y comunicados generales.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;¿Hay un comunicado oficial? –&lt;/strong&gt; Redacta un documento que deje las cosas claras, si es necesario agenda en el calendario una reunión para informar y resolver dudas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Tienes una nueva idea?&lt;/strong&gt; – Aterrízala en un documento que todos puedan revisar las veces que quieran.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Surgió una nueva tarea? –&lt;/strong&gt; Agrega la tarea en el software de gestión que utilizan en la que detalles &lt;strong&gt;todo&lt;/strong&gt; lo necesario, si es necesario notifica a los involucrados. Todo lo referente a esta tarea deberá quedar plasmado aquí.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Tienes comentarios sobre una tarea? –&lt;/strong&gt; Todo eso coméntalo en el &lt;em&gt;issue&lt;/em&gt; o &lt;em&gt;ticket&lt;/em&gt; correspondiente. Así cualquiera puede revisarlo, aún si apenas se integró al proyecto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Ocurrió algo off-topic? –&lt;/strong&gt; Coméntalo en el chat o directo con la persona involucrada. Si aplica, agenda un espacio en tu calendario para que no se te agenden cosas en ese tiempo (Ej. ir al doctor)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Saliendo de una llamada? –&lt;/strong&gt; El responsable de la llamada hace una breve lista con los puntos importantes o decisiones tomadas, esto evitará que se pierda el seguimiento.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Hay algo que requiera una explicación más complicada? –&lt;/strong&gt; Además de un documento, puedes hacer uso de las ventajas de grabar un video de ti o tu pantalla (usando herramientas como &lt;a href="https://www.loom.com/" rel="noopener noreferrer"&gt;Loom&lt;/a&gt;, Soapbox o similares), el resultado será asíncrono y puede ser visto varias veces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date unos minutos para ponerte al día –&lt;/strong&gt; Ten unos minutos para leer entender, y si es posible, mejorar las ideas que se proponen en los grupos respecto a lo que estés trabajando.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Videollamadas
&lt;/h2&gt;

&lt;p&gt;Las videollamadas son realmente útiles para poder poner en sincronía a un equipo y fomentan la empatía y comunicación. Sin embargo, deben ser acotadas y directas para evitar fomentar la distracción del equipo de trabajo y que se pierda el enfoque.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Limita&lt;/strong&gt; las llamadas a lo estrictamente necesario.&lt;/li&gt;
&lt;li&gt;Toda llamada oficial debe tener una &lt;strong&gt;orden del día&lt;/strong&gt; o tema a tratar y debe estar incluida en el evento.&lt;/li&gt;
&lt;li&gt;Trata solo temas que involucren a &lt;strong&gt;todos los asistentes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Establece un &lt;strong&gt;tiempo definido&lt;/strong&gt; (si es necesario, utiliza un &lt;em&gt;timer&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Utiliza la &lt;strong&gt;agenda&lt;/strong&gt; del calendario para evitar traslapes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menos es más.&lt;/strong&gt; Es mejor hacer reuniones más cortas que largas. Es mejor discutir un tema que muchos.&lt;/li&gt;
&lt;li&gt;En caso de ser posible (si el ancho de banda lo permite), &lt;strong&gt;mantén la cámara encendida&lt;/strong&gt; durante tus videollamadas. Esto ayuda a mejorar la sensación de presencia y atención.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Documentar todo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Todo lo que se habla por llamada se pierde, la historia de los chats se lleva lo demás con el tiempo, por eso es importante documentar todo lo que sea necesario.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Todo tiene un lugar y proceso&lt;/strong&gt;. Se necesita ser super transparente cuando se trata de documentos compartidos, herramientas de gestión de proyectos y recursos en común. Saber dónde encontrar cada cosa hace todo más fácil.&lt;/li&gt;
&lt;li&gt;Toda &lt;strong&gt;tarea o petición&lt;/strong&gt; debe tener un registro en el software de gestión de tereas (GitLab Issues, GitHub Issues, Basecamp, Asana, Jira, etc) que describa todo su proceso y así se pueda priorizar y gestionar correctamente.&lt;/li&gt;
&lt;li&gt;Para los textos y &lt;strong&gt;documentos&lt;/strong&gt; se recomienda utilizar un formato &lt;a href="https://www.animalz.co/blog/bottom-line-up-front/" rel="noopener noreferrer"&gt;Bottom Line Up Front (BLUF)&lt;/a&gt; donde el primer párrafo sea el que describa el objetivo y qué se necesita.&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FUh67BRNCQEav_EWT7NgylCvMoIr6TNEVWNMwVYIbAQhk-jbjW6_IUiC_E3KlzA8scz-nK2ABUqmF12pCCRsghX3gngfBD0AATlvV0xBGj88HhiOVOgMajcksX7sWxxCKS6zien8p" alt="img"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FYVUy_qbgK3HfNYhQmR3nTeJmRg1Ii9BztNnlmTYz0oo4W-rbNK2jZLvRuJccBgJRNaNwzh5Tf0aEusALBY-h2bucYQpY_ltxWVXJot-l4V5xB5_k-4KWhhZvNJynSFhE3mFDnWce" alt="img"&gt; VS &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FescUmuDuvp-Nvb53n8R6lCSca7CXT8-gk5397tR7UKN3kOFkA4ZoswA912LPtJcv70R_Irl87b8IYStT9QYJy97URNyfo6ioJpY03PBhzvsrv79azdx15dUuOfgx8wiDz8tjwJhr" alt="img"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Estatus diario
&lt;/h2&gt;

&lt;p&gt;Como beneficio principal es que al ser un mensaje simple, todos pueden conocer en qué estarán trabajando los demás en su día, sin tener que responder lo mismo a diferentes personas en diferentes momentos.&lt;/p&gt;

&lt;p&gt;Al principio del día, todos los miembros publican el estatus super general sobre lo que se hará el día de hoy y si están bloqueados con algo.&lt;/p&gt;

&lt;p&gt;Para esto se pueden usar soluciones automatizadas como &lt;a href="https://www.dailybot.co/es" rel="noopener noreferrer"&gt;Daily Bot&lt;/a&gt;, al que le contestas por un simple mensaje vía DM.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FwxU1ZDbyy3QhMIy3bEXVQ4Nk8lYu3i1KZr0R_9HButIEULzma8oFyFlGK-DjJCqr0UJk487i9HCFxW_lN-BC0_eDXzI4RdfvL-Zy-rQkWHOHoigJtmN9Aa_hPE7kZBoLiQr7pe9b" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FwxU1ZDbyy3QhMIy3bEXVQ4Nk8lYu3i1KZr0R_9HButIEULzma8oFyFlGK-DjJCqr0UJk487i9HCFxW_lN-BC0_eDXzI4RdfvL-Zy-rQkWHOHoigJtmN9Aa_hPE7kZBoLiQr7pe9b" alt="img"&gt;&lt;/a&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FHrFeyOT7jt9qsELOCfjz3CES1G85-5opPljVsL5pypmd3JHSaaEIVJ96snJlXuKLA6X0BocTXRDUGawwgzA5oP5Zp4hHVmuHhkPwjG1qvzrehER1fnIYyXnU7ANsntOd8YFr40dS" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FHrFeyOT7jt9qsELOCfjz3CES1G85-5opPljVsL5pypmd3JHSaaEIVJ96snJlXuKLA6X0BocTXRDUGawwgzA5oP5Zp4hHVmuHhkPwjG1qvzrehER1fnIYyXnU7ANsntOd8YFr40dS" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;La idea es tener noción del estado general &lt;strong&gt;sin agobiar a nadie.&lt;/strong&gt; Sé breve con tus respuestas, evita listar tareas atómicas (para eso están los issues o tickets). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;¿Gestionas el proyecto? –&lt;/strong&gt; Tómate el tiempo de leer los estatus de todo tu equipo y ajusta prioridades.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Gestión de tareas
&lt;/h2&gt;

&lt;p&gt;Esta parte es fundamental para que esto no se vuelva un caos, si todo se encuentra bien detallado, todos sabrán qué hacer con sus tareas. Para esto hay que tener en cuenta lo siguiente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Llevar el flujo de cada tarea &lt;strong&gt;en un solo lugar accesible para todos&lt;/strong&gt; (software de gestión de proyectos). Así sabes que ahí estará siempre disponible cualquier comentario o actualización.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioriza&lt;/strong&gt; las tareas usando las herramientas disponibles como listas, tableros y etiquetas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Gestionas el proyecto? –&lt;/strong&gt; Describe las tareas lo más específico que puedas, incluye screenshots o información adicional y asegúrate que estén priorizadas correctamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿No haces desarrollo? –&lt;/strong&gt; También puedes integrarte al flujo. Aùn usando herramientas de desarrollo, puedes adaptarlas por ejemplo usando un tablero tipo kanban con tus tareas. (&lt;a href="https://about.gitlab.com/blog/2018/08/02/4-ways-to-use-gitlab-issue-boards/" rel="noopener noreferrer"&gt;4 ways to use GitLab Issue Boards&lt;/a&gt;)&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FCO_HNnRayz4L25IhCOi6NxF3DyXYqNkl1Fhyf3sSmmWIYKEX6C45Emp3AuavxIG4UgxFtxnKF4fZnV8XfJ6MUsi1tYqGQonw2XaiorA04GnzOSc7B42T2q3t13B52gBQAyHrsI_0" alt="img"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Brainstorming
&lt;/h2&gt;

&lt;p&gt;En caso de que se necesite hacer una sesión de lluvia de ideas, existen diferentes herramientas en línea que permiten hacer tableros colaborativos (como &lt;a href="https://miro.com/" rel="noopener noreferrer"&gt;Miro&lt;/a&gt;) o incluso se puede utilizar la suite de Google para documentos. &lt;/p&gt;

&lt;p&gt;Tambien se puede complementar creando diagramas de flujo en Draw.io o Lucidchart.&lt;/p&gt;

&lt;p&gt;Estas herramientas también pueden ayudar en los procesos de &lt;em&gt;pair programming&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback constante
&lt;/h2&gt;

&lt;p&gt;Al estar remotos, la forma de comunicarse se ve limitada incluso para obtener retroalimentación, el reto: las personas tenemos formas distintas de ofrecer nuestra opinión.&lt;/p&gt;

&lt;p&gt;Las personas introvertidas por ejemplo, suelen sentirse más incómodos al levantar la voz en una reunión masiva. Aún así es importante que existan opciones para escuchar la valiosa opinión de todos. Algunas cosas a considerar para este tipo de situaciones son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solicitar comentarios &lt;strong&gt;por escrito.&lt;/strong&gt; Los introvertidos tienden a preferir comunicarse por texto en lugar de cara a cara.&lt;/li&gt;
&lt;li&gt;No comparar timidez con falta de productividad. Algunas personas no quieren el micrófono, pero eso no significa que no han logrado un gran trabajo.&lt;/li&gt;
&lt;li&gt;Fomentar reuniones uno-a-uno. La mayoría de las personas se sienten más cómodas en grupos más pequeños, por lo tanto, aliente a las personas a hacer un seguimiento personal en lugar de analizar en reuniones grupales.&lt;/li&gt;
&lt;li&gt;A los extrovertidos, dales oportunidades para guiar a otros empleados. Dar a sus empleados la oportunidad de guiar a otros es una gran oportunidad de crecimiento para el mentor y el mentoreado.&lt;/li&gt;
&lt;li&gt;También para este tipo de personas desarrolle actividades virtuales de creación de equipos que alienten a los diferentes empleados a participar y comunicarse.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reuniones 1-1
&lt;/h2&gt;

&lt;p&gt;Intenta establecer un formato de preguntas para iniciar la conversación y dar pie a la retroalimentación, algunos ejemplos pueden ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;¿Qué más necesitas de mí ahora?&lt;/li&gt;
&lt;li&gt;¿Hay algo en lo que te sientas confundido sobre nuestros objetivos o mis expectativas?&lt;/li&gt;
&lt;li&gt;¿Sientes que hay algo en lo que te esté sofocando y no te permito hacer tu mejor trabajo?&lt;/li&gt;
&lt;li&gt;¿Estoy haciendo algo que bloquee la libertad que necesitas para tu trabajo?&lt;/li&gt;
&lt;li&gt;¿Qué puedo hacer para equiparte mejor?&lt;/li&gt;
&lt;li&gt;¿Qué tan retado te sientes por tu trabajo? &lt;/li&gt;
&lt;li&gt;¿Qué podría ayudar a incrementar el nivel de reto?&lt;/li&gt;
&lt;li&gt;¿Qué habilidades te gustaría desarrollar pero no has podido por tiempo?&lt;/li&gt;
&lt;li&gt;¿Cuándo te sientes más motivado por tu trabajo? ¿Cómo podemos hacer más de eso?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Team Bonding
&lt;/h2&gt;

&lt;p&gt;En esta situación, no es posible salir a tomar algo juntos o reunirse en el comedor, por lo que es importante tener un tiempo informal de unión con los compañeros de trabajo, algunas acciones a tomar en el día a día pueden ser las siguientes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sé empático con los demás. Al preguntarle a alguien sobre algo, asegúrate de decirle hola, preguntar cómo le está yendo y, en general: actuar como si fuéramos un equipo de humanos hablando con otros humanos.&lt;/li&gt;
&lt;li&gt;Establecer canales de comunicación &lt;em&gt;for fun.&lt;/em&gt; Ejemplo: Memes y preguntas random (¿cuál es tu película favorita? ¿cuál es el último libro que has leido?).&lt;/li&gt;
&lt;li&gt;Celebra las victorias del trabajo o la vida con el equipo.&lt;/li&gt;
&lt;li&gt;Agenda momentos de convivencia social / actividades / juegos (&lt;a href="https://miro.com/guides/remote-work/team-buildinghttps://museumhack.com/virtual-team-building-for-remote-teams/" rel="noopener noreferrer"&gt;https://miro.com/guides/remote-work/team-buildinghttps://museumhack.com/virtual-team-building-for-remote-teams/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mantener una vida balanceada es crucial
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Mantén una &lt;strong&gt;rutina diaria&lt;/strong&gt; saludable. Bañarte, vestirte, desayunar, hacer ejercicio son actividades que deben permanecer en tu vida y te ayudarán a hacer la situación más llevadera.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adecua tu &lt;strong&gt;espacio de trabajo&lt;/strong&gt;. Considera una silla cómoda, escritorio, y cualquier cosa que debas tener a la mano durante tu jornada.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mantén tu espacio &lt;strong&gt;limpio&lt;/strong&gt;. Libre de &lt;strong&gt;distracciones&lt;/strong&gt; en la medida de lo posible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Planea&lt;/strong&gt; tu objetivo del día, establece tus metas y toma un &lt;strong&gt;descanso&lt;/strong&gt; entre actividades para mantenerte productivo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;El &lt;strong&gt;exceso&lt;/strong&gt; de trabajo no ayuda a nadie. Disfruta de tu tiempo, respeta tus horarios de trabajo.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sé flexible
&lt;/h2&gt;

&lt;p&gt;La situación en este momento es totalmente diferente. Todos podemos necesitar nuestros 5 minutos de &lt;em&gt;break&lt;/em&gt; o puede suceder un imprevisto. Algunos más tendrán que tomarse un tiempo para ocuparse de sus familias. Cada uno puede tener que adaptarse a la integración del trabajo con su vida actual.&lt;/p&gt;

&lt;p&gt;No está de más recordar que para muchos puede ser muy difìcil que estamos viviendo, es importante hablarlo para que puedas recibir apoyo. &lt;/p&gt;

&lt;p&gt;Y por último, y lo más importante... &lt;/p&gt;

&lt;h2&gt;
  
  
  Confía en tu equipo
&lt;/h2&gt;




&lt;p&gt;RESOURCES&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://basecamp.com/guides/how-we-communicate" rel="noopener noreferrer"&gt;https://basecamp.com/guides/how-we-communicate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.owllabs.com/blog/remote-work" rel="noopener noreferrer"&gt;https://www.owllabs.com/blog/remote-work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.idonethis.com/ultimate-guide-remote-standups/" rel="noopener noreferrer"&gt;http://blog.idonethis.com/ultimate-guide-remote-standups/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://info.trello.com/hubfs/How_To_Embrace_Remote_Work_Trello_Ultimate_Guide.pdf" rel="noopener noreferrer"&gt;https://info.trello.com/hubfs/How_To_Embrace_Remote_Work_Trello_Ultimate_Guide.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@meganberry/the-complete-guide-to-working-on-a-remote-team-6bb11213e37c" rel="noopener noreferrer"&gt;https://medium.com/@meganberry/the-complete-guide-to-working-on-a-remote-team-6bb11213e37c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/learn/remote-work/" rel="noopener noreferrer"&gt;https://zapier.com/learn/remote-work/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/transitioning-to-remote-work-in-a-hurry/" rel="noopener noreferrer"&gt;https://zapier.com/blog/transitioning-to-remote-work-in-a-hurry/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/blog/21-tips-for-remote-working/" rel="noopener noreferrer"&gt;https://auth0.com/blog/21-tips-for-remote-working/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.trello.com/6-mistakes-when-you-work-in-office-but-have-remote-team-members" rel="noopener noreferrer"&gt;https://blog.trello.com/6-mistakes-when-you-work-in-office-but-have-remote-team-members&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@meganberry/the-complete-guide-to-working-on-a-remote-team-6bb11213e37c" rel="noopener noreferrer"&gt;https://medium.com/@meganberry/the-complete-guide-to-working-on-a-remote-team-6bb11213e37c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wordstream.com/blog/ws/2017/06/16/working-remotely" rel="noopener noreferrer"&gt;https://www.wordstream.com/blog/ws/2017/06/16/working-remotely&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/learn/remote-work/how-build-culture-remote-team/" rel="noopener noreferrer"&gt;https://zapier.com/learn/remote-work/how-build-culture-remote-team/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.digitalocean.com/how-we-support-remote-employees-at-digitalocean/" rel="noopener noreferrer"&gt;https://blog.digitalocean.com/how-we-support-remote-employees-at-digitalocean/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paulminors.com/remote-office-not-required-by-jason-fried-david-h-h-book-summary-pdf/" rel="noopener noreferrer"&gt;https://paulminors.com/remote-office-not-required-by-jason-fried-david-h-h-book-summary-pdf/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Remote-Office-Not-Required/dp/0804137501" rel="noopener noreferrer"&gt;https://www.amazon.com/Remote-Office-Not-Required/dp/0804137501&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>remote</category>
      <category>remotework</category>
      <category>guideline</category>
    </item>
    <item>
      <title>Como utilizar un proyecto de Vue como biblioteca de componentes</title>
      <dc:creator>Blanca Azucena López Garduño</dc:creator>
      <pubDate>Thu, 12 Mar 2020 17:44:14 +0000</pubDate>
      <link>https://dev.to/blankazucenalg/como-utilizar-un-proyecto-de-vue-como-biblioteca-de-componentes-4ko</link>
      <guid>https://dev.to/blankazucenalg/como-utilizar-un-proyecto-de-vue-como-biblioteca-de-componentes-4ko</guid>
      <description>&lt;p&gt;Últimamente he estado utilizando Vuejs para diferentes proyectos y en ocasiones me he encontrado con la necesidad de reutilizar ciertos componentes en otros proyectos. &lt;/p&gt;

&lt;p&gt;¿Cómo podemos utilizar estos componentes en una biblioteca que pueda ser utilizada por otros proyectos? Afortunadamente, las herramientas de Vue nos permiten configurar la construcción en forma de biblioteca para exportar este tipo de componentes.&lt;/p&gt;

&lt;p&gt;Empezaremos por tener dos proyectos: uno que servirá como biblioteca de componentes y otro que dependerá de esta y utilizará los componentes.&lt;/p&gt;

&lt;p&gt;Para empezar, utilizaremos el generador de Vue para estos proyectos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn global add @vue/cli

&lt;span class="c"&gt;# biblioteca&lt;/span&gt;
vue create dummylib

&lt;span class="c"&gt;# app&lt;/span&gt;
vue create testapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si corremos el proyecto utilizando &lt;code&gt;yarn serve&lt;/code&gt; podremos ver el despliegue de la aplicación demo en ambos proyectos.&lt;/p&gt;

&lt;p&gt;Cuando se hace la construcción de un proyecto en Vue, por debajo se utiliza &lt;strong&gt;webpack&lt;/strong&gt; para construir el sitio con los &lt;em&gt;assets&lt;/em&gt; y dependencias necesarias.&lt;/p&gt;

&lt;p&gt;Supongamos que tenemos en &lt;code&gt;dummylib&lt;/code&gt; un componente que queremos utilizar en &lt;code&gt;testapp&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- TodayDateComponent --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Today is &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;todayDate&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;moment&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;moment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;todayDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;moment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;LL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este componente tiene como función solo desplegar la fecha actual, utilizando una dependencia externa como &lt;code&gt;moment.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiixh4lpv55y7yb2xgxsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiixh4lpv55y7yb2xgxsq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Construir como biblioteca
&lt;/h2&gt;

&lt;p&gt;Ahora, necesitamos declarar el archivo &lt;code&gt;main-lib.js&lt;/code&gt; donde se especifique qué componentes vamos a exportar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// main-lib.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./components/TodayDateComponent.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si construimos normalmente el proyecto &lt;code&gt;dummylib&lt;/code&gt; nos generará el sitio demo de Vue, necesitamos cambiar la configuración de construcción del proyecto a una biblioteca que exporte el contenido de &lt;code&gt;main-lib.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Afortunadamente, podemos usar el servicio de construcción de Vue para generar nuestro proyecto como una biblioteca en vez de un sitio web.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn global add @vue/cli-service-global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para esto, utilizaremos &lt;code&gt;vue-cli-service&lt;/code&gt; con el parámetro &lt;code&gt;--target lib&lt;/code&gt; y un nombre para la biblioteca (&lt;code&gt;--name dummylib&lt;/code&gt;) junto con la dirección del archivo en que se especifica los componentes exportados (&lt;code&gt;src/main-lib.js&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;El comando quedaría estructurado de la siguiente forma.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vue-cli-service build &lt;span class="nt"&gt;--target&lt;/span&gt; lib &lt;span class="nt"&gt;--name&lt;/span&gt; dummylib src/main-lib.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando podemos agregarlo a los comandos del archivo &lt;code&gt;package.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"serve"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-cli-service serve"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-cli-service build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"build-lib"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-cli-service build --target lib --name dummylib src/main-lib.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-cli-service lint"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para que otro proyecto pueda usar nuestra biblioteca construida, necesitamos decirle cuál de los archivos utilizará como principal al importarla. Para esto, debemos agregar la ruta &lt;code&gt;main&lt;/code&gt; al &lt;code&gt;package.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist/dummylib.common.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dependencias externas
&lt;/h2&gt;

&lt;p&gt;Ahora, si solo la construimos así sin más, la configuración nos hará incluir todas las dependencias y archivos importados dentro de nuestro paquete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffvg4918mvszxrw1cqk4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffvg4918mvszxrw1cqk4j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para evitar esto, debemos modificar la configuración de &lt;strong&gt;webpack&lt;/strong&gt; a través del archivo &lt;code&gt;vue.config.js&lt;/code&gt;. Este archivo, nos permite incluir plugins de Vue para desarrollo (por ejemplo, pre-procesadores de HTML como Pug, o de CSS como SASS) y &lt;strong&gt;extender&lt;/strong&gt; la configuración actual de webpack.&lt;/p&gt;

&lt;p&gt;Para más información sobre las diferentes formas de configurar dependencias externas checa la &lt;a href="https://webpack.js.org/configuration/externals/#combining-syntaxes" rel="noopener noreferrer"&gt;Documentación de Webpack: Externals&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** vue.config.js */&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// options...&lt;/span&gt;
  &lt;span class="cm"&gt;/** chainWebpack permite extender la config actual de webpack **/&lt;/span&gt;
  &lt;span class="na"&gt;chainWebpack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VUE_CLI_BUILD_TARGET&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lib&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="cm"&gt;/** Utilizamos solo esta configuración para el paquete de la biblioteca */&lt;/span&gt;
      &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;externals&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;moment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;moment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Al decirle que obtenga &lt;code&gt;moment&lt;/code&gt; de dependencias externas, ya no lo incorporará en el paquete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9u6o0ffpmo20kv7besui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9u6o0ffpmo20kv7besui.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Utilizar en el proyecto de prueba
&lt;/h2&gt;

&lt;p&gt;Ahora, en el proyecto &lt;code&gt;testapp&lt;/code&gt; podemos utilizar este componente añadiendo &lt;code&gt;dummylib&lt;/code&gt; como dependencia.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add ../dummylib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro-tip:&lt;/strong&gt; Puedes usar &lt;code&gt;yarn link&lt;/code&gt; para añadir la dependencia en modo de desarrollo en vez de usar la ruta relativa.&lt;/p&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# ~/.../dummylib $&lt;/span&gt;
yarn &lt;span class="nb"&gt;link
cd&lt;/span&gt; ../testapp
yarn &lt;span class="nb"&gt;link&lt;/span&gt; &lt;span class="s2"&gt;"dummylib"&lt;/span&gt;
yarn add &lt;span class="s2"&gt;"dummylib"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;p&gt;Después de añadir la dependencia, obtendríamos el componente dentro de &lt;code&gt;App.vue&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- App.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;today-date-component&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dummylib&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9z33vig3eoe5gute9u54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9z33vig3eoe5gute9u54.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué pasa si mi componente usa Vuex store?
&lt;/h2&gt;

&lt;p&gt;En este caso, la biblioteca se tendrá que exportar como un &lt;strong&gt;plugin&lt;/strong&gt; de Vue para poder utilizar la instancia de &lt;em&gt;vuex store&lt;/em&gt; de la otra aplicación.&lt;/p&gt;

&lt;p&gt;Suponiendo que tengamos un componente como este:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- ./components/DummyButton.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"increment"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;times&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;times&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;time&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`I have been clicked &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;times&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;commit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Que utiliza un módulo de &lt;em&gt;store&lt;/em&gt; como este:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** ./store/module.js */&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;getters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;mutations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Necesitamos modificar nuestro archivo &lt;code&gt;main-lib.js&lt;/code&gt; para que en vez de simplemente exportar los componentes, exporte un plugin de Vue que requiere un store de Vuex.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** main-lib.js **/&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;DummyButton&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./components/DummyButton.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./components/TodayDateComponent.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./store/module&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;install&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please initialise plugin with a Vuex store.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerModule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dummylib&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;component&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DummyButton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;DummyButton&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;component&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TodayDateComponent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TodayDateComponent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y simplemente podemos reconstruir la biblioteca&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn build-lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Utilizar en el app
&lt;/h3&gt;

&lt;p&gt;En nuestra app, tendremos que utilizar &lt;code&gt;vuex&lt;/code&gt; e inicializar nuestro &lt;em&gt;store&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn add vuex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** ./store/index.js */&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vuex&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vuex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Vuex&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Vuex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Store&lt;/span&gt;&lt;span class="p"&gt;({});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En nuestro archivo &lt;code&gt;main.js&lt;/code&gt; de la app, debemos utilizar este store en la instancia de Vue, pero antes, inicializar nuestra biblioteca &lt;code&gt;dummylib&lt;/code&gt; como plugin, pasándole el store.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** main.js **/&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./store&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;productionTip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/** Add dummylib as plugin */&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;dummylib&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dummylib&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dummylib&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt; &lt;span class="c1"&gt;// store required&lt;/span&gt;

&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;$mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Al inicializar nuestra biblioteca como plugin, ya no es necesario hacer el import de los componentes en &lt;code&gt;App.vue&lt;/code&gt; por lo que podemos solo utilizarlos en el &lt;em&gt;template&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- App.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"app"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;today-date-component&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dummy-button&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y &lt;em&gt;voilá&lt;/em&gt;, ahora podemos hacer uso de ambos componentes dentro de &lt;code&gt;testapp&lt;/code&gt; y utilizando la extensión de herramientas de Vue en el navegador podemos ver el estado del &lt;em&gt;store&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fju1stwxi90choldr6v0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fju1stwxi90choldr6v0v.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5f68cn0odv37e3zl7cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5f68cn0odv37e3zl7cd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vue</category>
      <category>library</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
