Search code examples
javascriptvue.jswebpackconfiguration-files

Vue js with an external configuration file


I'm wondering if it is possible to let to a Vue App to read an external configuration file. I imagine something in which I deploy the application, ship the application with the config file; at this point it should be possibile to change the configuration in the external file without having to rebuilt the entire application. Is there someway I can achieve that result? Now I am using a separated Vuex store but i cannot change configuration without rebuilding the entire app.

I forgot to mention that the project is made with Vue CLI.


Solution

  • You can fetch config.json from public folder and then load your Vue app in the resolve callback

    Place your configuration keys in /public/config.json file

    {
      "KEY": "value"
    }
    

    Then in your /src/main.js file

    fetch(process.env.BASE_URL + "config.json")
      .then((response) => response.json())
      .then((config) => {
           Vue.prototype.$config = config
           new Vue({
             router,
             store,
             render: (h) => h(App)
           }).$mount("#app")
      })
    

    You will have your configuration loaded application-wide. You can then just use

    mounted() {
      this.$config.KEY // "value"
    }
    

    in your Vue components

    Update Nov 23, 2022 (Adding Vue 3 Version):

    // VUE 3 Version
    const app = createApp(App)
    
    fetch(process.env.BASE_URL + "config.json")
      .then((response) => response.json())
      .then((config) => {
        // either use window.config
        window.config = config
        // or use [Vue Global Config][1]
        app.config.globalProperties.config = config
        // FINALLY, mount the app
        app.mount("#app")
      })