<?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: Jotcomponents</title>
    <description>The latest articles on DEV Community by Jotcomponents (@jotcomponents).</description>
    <link>https://dev.to/jotcomponents</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F378871%2F07e8924c-f9dd-4948-a206-eaa80c471b4e.png</url>
      <title>DEV Community: Jotcomponents</title>
      <link>https://dev.to/jotcomponents</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jotcomponents"/>
    <language>en</language>
    <item>
      <title>Laravel deployment with Dynamic Application Version Switching</title>
      <dc:creator>Jotcomponents</dc:creator>
      <pubDate>Sun, 02 Aug 2026 13:51:16 +0000</pubDate>
      <link>https://dev.to/jotcomponents/laravel-deployment-with-dynamic-application-version-switching-2cdl</link>
      <guid>https://dev.to/jotcomponents/laravel-deployment-with-dynamic-application-version-switching-2cdl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Most Laravel deployment procedures assume one of two extremes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;full root access on a dedicated server (and run &lt;code&gt;composer install&lt;/code&gt; directly on the box)&lt;/li&gt;
&lt;li&gt;cPanel-style shared host where you shuffle a &lt;code&gt;public/&lt;/code&gt; folder into &lt;code&gt;public_html&lt;/code&gt; and call it directly. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither model fits a workspace that hosts multiple in-flight branches of the same Laravel 11/12 application and needs to switch the live code version without restarting Apache or moving gigabytes of &lt;code&gt;vendor/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This article describes other deployment topology where the application is split into a &lt;strong&gt;private&lt;/strong&gt; core (above the web root) and a &lt;strong&gt;web&lt;/strong&gt; entry point (the only thing the web server can see), connected by a small PHP orchestrator that rewires three symlinks during deployment of new version of the application. The result is a system where switching the running version of the application is a one-line constant change in a single file.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Separation Model: Private vs Web
&lt;/h2&gt;

&lt;p&gt;Every deployment (target) workspace follows the same layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/www/&amp;lt;workspace&amp;gt;/
├── private/        ← Application Core (Outside Web Root)
│   ├── app/
│   ├── bootstrap/
│   ├── config/
│   ├── database/
│   ├── public/      ← Laravel's own public/ (used as symlink target)
│   ├── resources/
│   ├── routes/
│   ├── storage/
│   ├── vendor/
│   ├── build/       ← Vite Asset Manifest &amp;amp; Bundles
│   └── ...
├── private2/        ← A second full copy for app version switching
│   (folder structure same as in `private` folder)
│
├── web/             ← Apache DocumentRoot (public_html)
│   ├── index.php    ← Modified entry point (with app version switch)
│   ├── symlinksSetup.php    ← Symlink Orchestrator
│   ├── .htaccess
│   ├── storage → '../upload/'      (symlink, created by orchestrator)
│   ├── build → '../private/build/' (symlink, created by orchestrator)
│   └── ...
└── upload/          ← Shared storage target (used for media assets)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During a development Vite emits its production bundle to &lt;code&gt;public/build/&lt;/code&gt;. &lt;strong&gt;For deployment is a production bundle moved&lt;/strong&gt; to &lt;code&gt;private/build/&lt;/code&gt; (next to the source code it belongs to 'private or private2'). The orchestrator mirrors that link into &lt;code&gt;web/build&lt;/code&gt; so Blade views can resolve &lt;code&gt;@vite()&lt;/code&gt; references normally.&lt;/p&gt;

&lt;p&gt;Here is the simplified shorthand text summarizing the deployment transformation process, tailored for experienced web application workers:&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Transformation Overview
&lt;/h2&gt;

&lt;p&gt;To prepare the application for runtime switching, the deployment script constructs the &lt;code&gt;private&lt;/code&gt; and &lt;code&gt;web&lt;/code&gt; directories through a structured transformation process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Application Filtering:&lt;/strong&gt; The script scans the application root and copies only the essential files into the &lt;code&gt;deploy/private&lt;/code&gt; directory. It explicitly strips out development tooling and non-essential directories (such as tests, documentation, and node dependencies) using a predefined exclusion list to keep the deployable artifact clean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Asset Relocation:&lt;/strong&gt; Hashed frontend bundles produced by Vite are moved from the standard public build directory into &lt;code&gt;deploy/private/build/&lt;/code&gt;. This ensures the compiled production assets reside securely alongside the application core.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Environment Injection:&lt;/strong&gt; Target-specific overrides are layered into the build without polluting the source repository. Custom configuration files—such as the target's &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.htaccess&lt;/code&gt;, and a modified &lt;code&gt;index.php&lt;/code&gt; configured for application switching—are directly merged into the respective &lt;code&gt;deploy/private/&lt;/code&gt; and &lt;code&gt;deploy/web/&lt;/code&gt; directories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Archive Generation:&lt;/strong&gt; Finally, the script packages the prepared directories into two timestamped archives (&lt;code&gt;private&lt;/code&gt; and &lt;code&gt;web&lt;/code&gt;) per environment. These archives are then ready to be transferred and extracted on the target staging or production servers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Runtime Orchestrator
&lt;/h2&gt;

&lt;p&gt;This is the code that turns a static &lt;code&gt;private/&lt;/code&gt;/&lt;code&gt;private2/&lt;/code&gt; pair into a switchable runtime. The version that ships as a test fixture in this&lt;br&gt;
repository lives at &lt;code&gt;web/symlinksSetup.php&lt;/code&gt; on the host.&lt;/p&gt;
&lt;h3&gt;
  
  
  Three responsibilities
&lt;/h3&gt;

&lt;p&gt;The function performs three jobs in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt; the request — refuse to do anything if &lt;code&gt;PRIVATE_CHANGE&lt;/code&gt; is not set in &lt;code&gt;.env&lt;/code&gt; or if the requested switch value isn't recognised.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map&lt;/strong&gt; the requested instance (&lt;code&gt;private&lt;/code&gt; or &lt;code&gt;private2&lt;/code&gt;) to three concrete
symlink definitions: &lt;code&gt;web&lt;/code&gt;, &lt;code&gt;storage&lt;/code&gt;, and &lt;code&gt;build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconcile&lt;/strong&gt; the filesystem — if any of the three links is missing or points to the wrong target, tear down all six (the three for each instance) and rebuild the three for the active one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When a switch is actually required, the function unlinks the three candidate links for &lt;strong&gt;both&lt;/strong&gt; instances before creating the three it needs. That ordering matters: because &lt;code&gt;web/build&lt;/code&gt; and &lt;code&gt;web/storage&lt;/code&gt; are nested paths, any stale link from the inactive instance is removed first so we never create a symlink whose parent has already been claimed by the wrong target.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Bootstrap Chain in &lt;code&gt;index.php&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The orchestrator is only useful if it runs &lt;strong&gt;before&lt;/strong&gt; the Laravel kernel touches the filesystem. The entry point is the customised &lt;code&gt;web/index.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'LARAVEL_START'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;microtime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="k"&gt;require&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/symlinksSetup.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="no"&gt;APP_SWITCH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'private'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Change this to 'private' or 'private2' as needed&lt;/span&gt;

&lt;span class="nf"&gt;symlinksSetup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;APP_SWITCH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Determine if the application is in maintenance mode...&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$maintenance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/../'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="no"&gt;APP_SWITCH&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/storage/framework/maintenance.php'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;require&lt;/span&gt; &lt;span class="nv"&gt;$maintenance&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Register the Composer autoloader...&lt;/span&gt;
&lt;span class="k"&gt;require&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/../'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="no"&gt;APP_SWITCH&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/vendor/autoload.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Bootstrap Laravel and handle the request...&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/../'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="no"&gt;APP_SWITCH&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/bootstrap/app.php'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;handleRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Request&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;capture&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;All three follow-up paths use &lt;code&gt;APP_SWITCH&lt;/code&gt;.&lt;/strong&gt; The maintenance check, the autoloader, and the bootstrap path all interpolate the constant. That uniformity is what makes the single-line switch effective: &lt;br&gt;
changing  &lt;code&gt;APP_SWITCH&lt;/code&gt; from &lt;code&gt;'private'&lt;/code&gt; to &lt;code&gt;'private2'&lt;/code&gt; rewires every subsequent file access with no other edits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The orchestration is small on purpose: one PHP function, one &lt;code&gt;.env&lt;/code&gt; flag, one constant. That is the entire surface area that turns a shared-host-friendly Laravel layout into a runtime-switchable blue/green workspace.&lt;/p&gt;

&lt;p&gt;A more detailed description of the code used and the method of deploying Laravel web applications is provided in the article &lt;a href="https://jotcomponents.net/en/posts/laravel-web-application-on-hosting-server" rel="noopener noreferrer"&gt;Laravel 11+ on a Hosting Server with Dynamic Application Version Switching&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>development</category>
    </item>
    <item>
      <title>How use .env files in Quasar</title>
      <dc:creator>Jotcomponents</dc:creator>
      <pubDate>Mon, 24 Aug 2020 13:03:55 +0000</pubDate>
      <link>https://dev.to/jotcomponents/how-use-env-files-in-quasar-1k55</link>
      <guid>https://dev.to/jotcomponents/how-use-env-files-in-quasar-1k55</guid>
      <description>&lt;p&gt;Many developers especially beginers have problems with proper use of .env file during Quasar application development and build-up.&lt;/p&gt;

&lt;p&gt;Quasar recent documentation (for ver.1.13) mentions three methods for using enviroment variables in the application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CLI inline variables e.g.&lt;br&gt;
&lt;code&gt;QENV=development quasar dev&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;@quasar/dotenv extension&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/@quasar/quasar-app-extension-dotenv"&gt;https://www.npmjs.com/package/@quasar/quasar-app-extension-dotenv&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;@quasar/qenv extension&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/@quasar/quasar-app-extension-qenv"&gt;https://www.npmjs.com/package/@quasar/quasar-app-extension-qenv&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunatelly despite descriptions in official documentation&lt;br&gt;
&lt;a href="https://quasar.dev/quasar-cli/handling-process-env"&gt;https://quasar.dev/quasar-cli/handling-process-env&lt;/a&gt;&lt;br&gt;
&lt;a href="https://quasar.dev/quasar-cli/quasar-conf-js#Example-setting-env-for-dev%2Fbuild"&gt;https://quasar.dev/quasar-cli/quasar-conf-js#Example-setting-env-for-dev%2Fbuild&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;developers are confused in many cases when they try to use .env file due to missing important information in Quasar ducumentation. In this article I want to clarify how proper to use the enviromental variables.&lt;/p&gt;
&lt;h2&gt;
  
  
  Two basic use cases
&lt;/h2&gt;

&lt;p&gt;Because of different scope of operation we can split the described methods in two groups:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;applicable in quasar.conf.js (main configuration file):

&lt;ul&gt;
&lt;li&gt;CLI inline variables&lt;/li&gt;
&lt;li&gt;@quasar/dotenv extension&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;applicable ONLY in the application (boot files, components):

&lt;ul&gt;
&lt;li&gt;@quasar/qenv extension&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most important conclusion here is&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You cannot use @quasar/qenv extension for settings in quasar.conf.js&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How to use @quasar/dotenv extension
&lt;/h2&gt;

&lt;p&gt;Very good description is in article&lt;br&gt;
&lt;a href="https://medium.com/carbono/using-env-file-in-quasar-apps-72b56909302f"&gt;https://medium.com/carbono/using-env-file-in-quasar-apps-72b56909302f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At first install Quasar App Extension dotenv:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/@quasar/quasar-app-extension-dotenv"&gt;https://www.npmjs.com/package/@quasar/quasar-app-extension-dotenv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;quasar ext add @quasar/dotenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then create new js file envparser.js in /src/config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const DotEnv = require('dotenv')
const parsedEnv = DotEnv.config().parsed
module.exports = function () {
  // Let's stringify our variables
  for (key in parsedEnv) {
    if (typeof parsedEnv[key] === 'string') {
      parsedEnv[key] = JSON.stringify(parsedEnv[key])
    }
  }
  return parsedEnv
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;in quasar.conf.js then include on the most top of the file following code:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const envparser = require('./src/config/envparser.js')&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and assign this function to (new) env variable to the build attribute in quasar.conf.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build: {
  env: envparser(),
  vueRouterMode: 'history',
...}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Create a file &lt;strong&gt;.env&lt;/strong&gt; in the top (root) project directory. It can contain any number of custom env variables e.g.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;JOT_PUBLIC_PATH=http://dev.com/flexbox/dist/spa&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then you use the variable in quasar.config.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build: {
     env: envparser(),
     vueRouterMode: 'history',
     publicPath: ctx.prod ? process.env.JOT_PUBLIC_PATH : '',
...}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;In object process.env are available all server/computer environment variables and all custom environment variables from .env file.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use @quasar/qenv extension
&lt;/h2&gt;

&lt;p&gt;Install Quasar extension&lt;/p&gt;

&lt;p&gt;&lt;code&gt;quasar ext add @quasar/qenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;File .quasar.env.json is created during installation with demo template&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "development": {
    "ENV_TYPE": "Running Development",
    "ENV_DEV": "Development"
  },
  "production": {
    "ENV_TYPE": "Running Production",
    "ENV_PROD": "Production"
  },
  "test": {
    "ENV_TYPE": "Running Test",
    "ENV_Test": "Test"
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Variables from .quasar.env.json are available only after successfull application build (i.e. after processing quasar.config.js). These custom variables together with some other built-in variables are available in the application boot files, application and components files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In object process.env are available only variables from .quasar.env.json and Quasar built-in environment variables.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using above defined template the process.env object contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
      "ENV_TYPE": "Running Development",
      "ENV_DEV": "Development",
      "NODE_ENV": "development",
      "CLIENT": true,
      "SERVER": false,
      "DEV": true,
      "PROD": false,
      "MODE": "spa",
      "VUE_ROUTER_MODE": "hash",
      "VUE_ROUTER_BASE": "",
      "APP_URL": "http://localhost:8080"
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After build processing the server/computer environment variables are NOT AVAILABLE in new created process.env object.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example use in boot file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default async (app /* { app, router, Vue ... } */) =&amp;gt; {
 console.log('show router mode:', process.env.VUE_ROUTER_MODE);
 // something to do
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Example use in *.vue file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  console.log('inside', process.env.VUE_ROUTER_MODE);
  export default {
    name: 'App',
  }
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>quasar</category>
      <category>vue</category>
    </item>
  </channel>
</rss>
