<?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: Dani J. Pérez</title>
    <description>The latest articles on DEV Community by Dani J. Pérez (@djdany01).</description>
    <link>https://dev.to/djdany01</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%2F16500%2Fe914274f-1794-483b-b107-c3d4abb0df25.JPG</url>
      <title>DEV Community: Dani J. Pérez</title>
      <link>https://dev.to/djdany01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/djdany01"/>
    <language>en</language>
    <item>
      <title>Cómo usar variables de entorno dinámicas en VueJS</title>
      <dc:creator>Dani J. Pérez</dc:creator>
      <pubDate>Thu, 20 Sep 2018 14:06:21 +0000</pubDate>
      <link>https://dev.to/djdany01/cmo-usar-variables-de-entorno-dinmicas-en-vuejs-2781</link>
      <guid>https://dev.to/djdany01/cmo-usar-variables-de-entorno-dinmicas-en-vuejs-2781</guid>
      <description>

&lt;p&gt;&lt;a href="https://dev.to/djdany01/how-to-use-dynamic-environment-variables-in-vuejs-4l3e"&gt;&lt;em&gt;Read in English&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imaginad que necesitais hacer una aplicación que depende de una API para recoger sus datos, y nuestro desarrollo se divide en 3 fases de despliegue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;li&gt;Dev&lt;/li&gt;
&lt;li&gt;Prod&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lo que queremos conseguir es que, depende de la fase en la que nos encontremos, la aplicación pueda llamar al servicio correspondiente, y no queremos tener que desplegar la aplicación cada vez que cambian las URLs o cambiamos de fase y por tanto de URLs.&lt;br&gt;
Lo que haremos será crear un archivo json en nuestra carpeta de estáticos, la estructura del ejemplo quedaría así:&lt;/p&gt;

&lt;h6&gt;
  
  
  /static/config.json
&lt;/h6&gt;

&lt;p&gt;El archivo para el ejemplo contendrá la URL que se usará por defecto:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://pordefecto.algo"&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;p&gt;Ahora en nuestra aplicación Vue donde usemos la url declararemos en la función created() una falsa llamada GET al archivo, en este ejemplo usaremos &lt;em&gt;axios&lt;/em&gt;:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"static/config.json"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&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;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&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;Así nuestra aplicación recuperará dinamicamente esa url, pudiendo modificarla más tarde sin necesidad de volver a hacer el build.&lt;/p&gt;

&lt;p&gt;Bien, ahora tendremos que definir un archivo por cada fase, en nuestro caso 3 fases, 3 archivos en la carpeta environments (más el por defecto que ya hemos definido antes en &lt;em&gt;static&lt;/em&gt;), la estructura quedaría así:&lt;/p&gt;

&lt;h6&gt;
  
  
  /environments/test/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /environments/dev/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /environments/pro/config.json
&lt;/h6&gt;

&lt;p&gt;Así que tenemos ya los 3 archivos para cada fase (más el por defecto) y la aplicación llama dinamicamente al archivo para coger la URL, ahora nos tenemos que asegurar de que cuando la aplicación se despliegue &lt;em&gt;(npm run build)&lt;/em&gt; también se copie la carpeta environments al destino del mismo. Esto podemos hacerlo de muchas maneras automaticamente (CopyWebpackPlugin, npm run script...) o nosotros manualmente copiando la carpeta donde corresponda, como ejemplo usaré el plugin para webpack CopyWebpackPlugin que nos permite copiar archivos añadiendo lo siguiente a nuestro archivo de configuración en este caso, &lt;em&gt;/build/webpack.base.conf.js&lt;/em&gt; (cambialo según tu configuración): &lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CopyWebpackPlugin&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../static/js'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist/js'&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;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../static/config.json'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist/static'&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;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../config/environments/'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist'&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;Finalmente, nuestra estructura después de hacer el build quedaría así:&lt;/p&gt;

&lt;h6&gt;
  
  
  /dist/index.html
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /dist/static/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /dist/environments/test/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /dist/environments/dev/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /dist/environments/pro/config.json
&lt;/h6&gt;

&lt;h6&gt;
  
  
  /dist/static/js/...
&lt;/h6&gt;

&lt;p&gt;Ahora cada vez que despleguemos nuestra aplicación nos aseguraremos de reemplazar el &lt;em&gt;/static/config.json&lt;/em&gt; con el de la fase que corresponda, pudiendo hacerlo nosotros manualmente o si contamos con algún proceso de CI &lt;em&gt;(Integración Continua)&lt;/em&gt; como Jenkins, podremos configurarlo para que copie el archivo que corresponda según la fase que despliegue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks to the entire dev.to community!
&lt;/h3&gt;


</description>
      <category>environment</category>
      <category>vue</category>
      <category>howto</category>
    </item>
    <item>
      <title>How to use dynamic environment variables in VueJS</title>
      <dc:creator>Dani J. Pérez</dc:creator>
      <pubDate>Tue, 04 Sep 2018 14:39:18 +0000</pubDate>
      <link>https://dev.to/djdany01/how-to-use-dynamic-environment-variables-in-vuejs-4l3e</link>
      <guid>https://dev.to/djdany01/how-to-use-dynamic-environment-variables-in-vuejs-4l3e</guid>
      <description>

&lt;p&gt;&lt;a href="https://dev.to/djdany01/cmo-usar-variables-de-entorno-dinmicas-en-vuejs-59i6-temp-slug-502777?preview=803e036e9d1b1413804ac2b18fd25d9d4768517e2afc36eab840ef0ced8d798283dc1eea92a6b55b23fd750f08b0e2417930faa6a2d4637e7b7c4df9"&gt;&lt;em&gt;Leer en español&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  This is my first post to DEV.TO community and the first one in English so I'll try to do my best :D
&lt;/h3&gt;

&lt;p&gt;Imagine that you need an app based in an API to fetch the data, and we have 3 different development stages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;li&gt;Dev&lt;/li&gt;
&lt;li&gt;Prod&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What we want is, depending on the stage we are, the app can call the right API and don't want to deploy our app every time we change between stages or change URLs.&lt;br&gt;
What we will do is create a new file in our statics folder, this example structure is:&lt;/p&gt;

&lt;h5&gt;
  
  
  /static/config.json
&lt;/h5&gt;

&lt;p&gt;The example file will have the URL used by default:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://bydefault.something"&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;p&gt;Now in our Vue app where we use the URL, declare in created() function a false API GET call to that file, in this example, we use &lt;em&gt;axios&lt;/em&gt;:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"static/config.json"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&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;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&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;Now our app will fetch that URL dynamically, and we can change it later without &lt;br&gt;
the need to deploy it.&lt;/p&gt;

&lt;p&gt;Well, now we have to create a file for every stage we need, in this case, we have 3 stages, so we need to create 3 files in the environments directory (plus the default created before), the example structure will be:&lt;/p&gt;

&lt;h5&gt;
  
  
  /environments/test/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /environments/dev/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /environments/pro/config.json
&lt;/h5&gt;

&lt;p&gt;So, we have the 3 files for every stage (plus the default) and the app can call dynamically at the file to fetch the URL, now we have to make sure to copy the environment folder to the same destination when we deploy the app &lt;em&gt;(npm run build)&lt;/em&gt;. We can do this done in multiple automatic forms (CopyWebpackPlugin, npm run script...) or can we do it manually by copying the folder to the destination, in this example will use the CopyWebpackPlugin plugin, what let us copy files automatically by adding the following to our config file, in this case, &lt;em&gt;/build/webpack.base.conf.js&lt;/em&gt; (change it based on your configuration):&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CopyWebpackPlugin&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../static/js'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist/js'&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;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../static/config.json'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist/static'&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;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../config/environments/'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'../dist'&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;Finally, our structure after deploy will be:&lt;/p&gt;

&lt;h5&gt;
  
  
  /dist/index.html
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /dist/static/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /dist/environments/test/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /dist/environments/dev/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /dist/environments/pro/config.json
&lt;/h5&gt;

&lt;h5&gt;
  
  
  /dist/static/js/...
&lt;/h5&gt;

&lt;p&gt;Now every time we deploy our app, we have to make sure to replace &lt;em&gt;/static/config.json&lt;/em&gt; with the right environment file, we can do this manually or if we have any CI &lt;em&gt;(Continuous Integration)&lt;/em&gt; process such as Jenkins, we can configure it to automatically copy the right file based on deployment stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks to the entire dev.to community!
&lt;/h3&gt;


</description>
      <category>environment</category>
      <category>vue</category>
      <category>howto</category>
    </item>
  </channel>
</rss>
