<?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: Cherny</title>
    <description>The latest articles on DEV Community by Cherny (@chachan).</description>
    <link>https://dev.to/chachan</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%2F98363%2Fff870cb8-1b14-485a-994c-dd31fb3dee6d.jpeg</url>
      <title>DEV Community: Cherny</title>
      <link>https://dev.to/chachan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chachan"/>
    <language>en</language>
    <item>
      <title>Dockerizando Angular con Bulma</title>
      <dc:creator>Cherny</dc:creator>
      <pubDate>Wed, 04 Sep 2019 03:48:16 +0000</pubDate>
      <link>https://dev.to/chachan/dockerizando-angular-con-bulma-17pa</link>
      <guid>https://dev.to/chachan/dockerizando-angular-con-bulma-17pa</guid>
      <description>&lt;p&gt;Requisitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conocer funcionamiento básico de Docker&lt;/li&gt;
&lt;li&gt;Conocer funcionamiento básico de npm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En mi proceso de aprendizaje de Angular he querido aprovechar la oportunidad de probar un nuevo framework CSS y buscando alternativas conseguí uno que llamó mi atención por su documentación y variedad de componentes, hablo de &lt;a href="http://bulma.io/" rel="noopener noreferrer"&gt;bulma.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Incluir bulma dentro de un proyecto de Angular se puede hacer de varias maneras, e.g. incluir el enlace del CSS directamente del CDN dentro del &lt;code&gt;index.html&lt;/code&gt; o usar &lt;a href="https://bulma.io/bulma-start/" rel="noopener noreferrer"&gt;Bulma start&lt;/a&gt;. Otra manera sería incluir el CSS en el proyecto como dependencia y controlar su actualización como si fuese cualquier otra dependencia.&lt;/p&gt;

&lt;p&gt;El código final lo puedes conseguir en: &lt;a href="https://github.com/chachan/angular-bulma-scss" rel="noopener noreferrer"&gt;chachan/angular-bulma-scss · GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Versiones usadas al momento de escribir esto:&lt;br&gt;
Angular: 8.2.4&lt;br&gt;
bulma: 0.7.5&lt;br&gt;
Node: 12.9.1&lt;br&gt;
Docker: 18.09.2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creamos el proyecto de angular. Para evitar instalar dependencias en la maquina de trabajo directamente, suelo usar contenedores. Este sería el Dockerfile. Podemos ubicarlo en &lt;code&gt;./angular/angular.dockerfile&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node:12.9.1&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Creamos el contenedor
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; angular:local &lt;span class="nt"&gt;-f&lt;/span&gt; angular/angular.dockerfile ./angular
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Arrancamos y entramos al contenedor para poder crear el proyecto de Angular
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/angular:/app &lt;span class="nt"&gt;-w&lt;/span&gt; /app angular:local bash
/app# ng new &lt;span class="nt"&gt;--defaults&lt;/span&gt; &lt;span class="nt"&gt;--skip-git&lt;/span&gt; my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Este es un comando de angular-cli que genera la base del proyecto de Angular por nosotros, para el momento en el que escribo esto, la versión actual de Angular pregunta qué pre-procesador queremos usar para nuestros estilos. Para poder aprovechar la flexibilidad de bulma (&lt;a href="https://bulma.io/documentation/customize/concepts/" rel="noopener noreferrer"&gt;Concepts | Bulma: a modern CSS framework based on Flexbox&lt;/a&gt;) podemos elegir SCSS y que sea esa la sintaxis a escribir dentro del proyecto de Angular.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Si el proyecto de Angular ya existe&lt;/em&gt; sólo tienes que definir el pre-procesador por tu cuenta, afortunadamente lo puedes hacer con angular-cli:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/angular:/app &lt;span class="nt"&gt;-w&lt;/span&gt; /app/my-app angular:local &lt;span class="se"&gt;\&lt;/span&gt;
  ng config schematics.@schematics/angular:component.styleext scss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;al final de &lt;code&gt;angular/angular.json&lt;/code&gt; deberías poder ver:&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;"schematics"&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;"@schematics/angular:component"&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;"styleext"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"scss"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Instalamos bulma, nuevamente dentro del contenedor hacemos:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/angular:/app &lt;span class="nt"&gt;-w&lt;/span&gt; /app/my-app angular:local bash
/app/my-app# npm &lt;span class="nb"&gt;install &lt;/span&gt;bulma
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;En &lt;code&gt;angular/my-app/src/styles.scss&lt;/code&gt; importamos bulma:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'../node_modules/bulma'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Hay que hacer una pequeña modificación para que no sólo se escuche por &lt;code&gt;localhost&lt;/code&gt; ya que el proyecto está dentro de un contenedor. Aseguramos que en &lt;code&gt;angular/my-app/package.json&lt;/code&gt; la entrada de &lt;code&gt;scripts.start&lt;/code&gt; tenga el siguiente contenido:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"start": "ng serve --host 0.0.0.0",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Colocamos un HTML de prueba, podemos reemplazar el contenido de &lt;code&gt;angular/my-app/src/app/app.component.html&lt;/code&gt; con:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"section"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello World&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"subtitle"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;My first website with &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Bulma&lt;span class="nt"&gt;&amp;lt;/strong&amp;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;/section&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Arrancamos el servidor
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/angular:/app &lt;span class="nt"&gt;-w&lt;/span&gt; /app/my-app &lt;span class="nt"&gt;-p&lt;/span&gt; 4200:4200 angular:local npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Visitamos &lt;a href="http://localhost:4200/" rel="noopener noreferrer"&gt;http://localhost:4200/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La estructura de directorios definitivamente no es la mejor y sería algo a mejorar.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>docker</category>
      <category>bulma</category>
    </item>
  </channel>
</rss>
