1const CompressionPlugin = require('compression-webpack-plugin'); 2 3module.exports = { 4 css: { 5 loaderOptions: { 6 sass: { 7 prependData: () => { 8 const envName = process.env.VUE_APP_ENV_NAME; 9 const hasCustomStyles = 10 process.env.CUSTOM_STYLES === 'true' ? true : false; 11 if (hasCustomStyles && envName !== undefined) { 12 // If there is an env name defined, import Sass 13 // overrides. 14 // It is important that these imports stay in this 15 // order to make sure enviroment overrides 16 // take precedence over the default BMC styles 17 return ` 18 @import "@/assets/styles/bmc/helpers"; 19 @import "@/env/assets/styles/_${envName}"; 20 @import "@/assets/styles/bootstrap/_helpers"; 21 `; 22 } else { 23 // Include helper imports so single file components 24 // do not need to include helper imports 25 26 // BMC Helpers must be imported before Bootstrap helpers to 27 // take advantage of Bootstrap's use of the Sass !default 28 // statement. Moving this helper after results in Bootstrap 29 // variables taking precedence over BMC's 30 return ` 31 @import "@/assets/styles/bmc/helpers"; 32 @import "@/assets/styles/bootstrap/_helpers"; 33 `; 34 } 35 } 36 } 37 } 38 }, 39 devServer: { 40 https: true, 41 proxy: { 42 '/': { 43 target: process.env.BASE_URL, 44 onProxyRes: proxyRes => { 45 // This header is ignored in the browser so removing 46 // it so we don't see warnings in the browser console 47 delete proxyRes.headers['strict-transport-security']; 48 } 49 } 50 }, 51 port: 8000 52 }, 53 productionSourceMap: false, 54 configureWebpack: config => { 55 const envName = process.env.VUE_APP_ENV_NAME; 56 const hasCustomStore = process.env.CUSTOM_STORE === 'true' ? true : false; 57 const hasCustomRouter = process.env.CUSTOM_ROUTER === 'true' ? true : false; 58 const hasCustomAppNav = 59 process.env.CUSTOM_APP_NAV === 'true' ? true : false; 60 61 if (process.env.NODE_ENV === 'production') { 62 config.plugins.push( 63 new CompressionPlugin({ 64 deleteOriginalAssets: true 65 }) 66 ); 67 } 68 69 if (envName !== undefined) { 70 if (hasCustomStore) { 71 // If env has custom store, resolve store module in src/main.js 72 config.resolve.alias['./store$'] = `./env/store/${envName}.js`; 73 } 74 if (hasCustomRouter) { 75 // If env has custom router, resolve router module in src/main.js 76 config.resolve.alias['./router$'] = `./env/router/${envName}.js`; 77 } 78 if (hasCustomAppNav) { 79 // If env has custom AppNavigation, resolve AppNavigationMixin module in src/components/AppNavigation/AppNavigation.vue 80 config.resolve.alias[ 81 './AppNavigationMixin$' 82 ] = `@/env/components/AppNavigation/${envName}.js`; 83 } 84 } 85 }, 86 chainWebpack: config => { 87 if (process.env.NODE_ENV === 'production') { 88 config.plugins.delete('prefetch'); 89 config.plugins.delete('preload'); 90 } 91 }, 92 pluginOptions: { 93 i18n: { 94 localeDir: 'locales', 95 enableInSFC: true 96 } 97 } 98}; 99