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/storeThe filename needs to match the
VUE_APP_ENV_NAMEvalue defined in the .env file. The store import insrc/main.jswill 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/routerThe filename needs to match the
VUE_APP_ENV_NAMEvalue defined in the .env file. The router import insrc/main.jswill 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