This document provides instructions for how to add environment specific modifications to the Web UI.
.env.<ENV_NAME>
file in the project rootNODE_ENV=production
key value pair in the fileVUE_APP_ENV_NAME
key with the value set to the new environment nameExample .env.openpower
:
NODE_ENV=production VUE_APP_ENV_NAME=openpower
Vuex store modules contain the application's API calls.
<ENV_NAME>.js
file in src/env/store
The filename needs to match the
VUE_APP_ENV_NAME
value defined in the .env file. The store import insrc/main.js
will resolve to this new file.
registerModule
and unregisterModule
instance methods to add/remove store modulesExample src/env/store/openpower.js
:
import store from '@/store; //@ aliases to src directory import HmcStore from './Hmc/HmcStore'; store.registerModule('hmc', HmcStore); export default store;
Vue Router determines which pages are accessible in the UI.
<ENV_NAME>.js
file in src/env/router
The filename needs to match the
VUE_APP_ENV_NAME
value defined in the .env file. The router import insrc/main.js
will resolve to this new file.
addRoutes
instance method to define new routesExample src/env/router/openpower.js
:
import router from '@/router'; //@ aliases to src directory import AppLayout from '@/layouts/AppLayout'; router.addRoutes([ { path: '/', component: AppLayout, children: [ { path: '/access-control/hmc', component: () => import('../views/Hmc'), meta: { title: 'appPageTitle.hmc' } } ] } ]); export default router;
For features that show or hide chunks of code in the template/markup, use the src/envConstants.js
file, to determine which features are enabled/disabled depending on the VUE_APP_ENV_NAME
value.
Avoid complex v-if/v-else logic in the templates. If a template is being heavily modified, consider creating a separate View and updating the router definition.
envConstants.js
fileExample for adding conditional navigation item to AppNavigation.vue component:
src/envConstants.js
const envName = process.env.VUE_APP_ENV_NAME; export const ENV_CONSTANTS = { name: envName || 'openbmc', hmcEnabled: envName === 'openpower' ? true : false };
src/components/AppNavigation/AppNavigation.vue
<template> ... <b-nav-item to="/access-control/hmc" v-if="hmcEnabled"> HMC </b-nav-item> ... </template> <script> import { ENV_CONSTANTS } from '@/envConstants.js'; export default { data() { return { hmcEnabled: ENV_CONSTANTS.hmcEnabled } } } </script>
VUE_APP_ENV_NAME
key value pair to your env.development.local
file.npm run serve
Run npm build script with vue-cli --mode
option flag. This requires corresponding .env file to exist.
npm run build -- --mode openpower
OR
pass env variable directly to script
VUE_APP_ENV_NAME=openpower npm run build