Ocelot-Social/nuxt.config.js
2018-10-29 23:39:09 +01:00

168 lines
3.6 KiB
JavaScript

const pkg = require('./package')
const envWhitelist = [
'NODE_ENV',
'BACKEND_URL',
'MAINTENANCE'
]
module.exports = {
mode: 'universal',
transition: {
name: 'slide-up',
mode: 'out-in'
},
env: {
// pages which do NOT require a login
publicPages: [
'login',
'logout',
'register',
'signup',
'reset',
'reset-token',
'pages-slug'
],
// pages to keep alive
keepAlivePages: ['index']
},
/*
** Headers of the page
*/
head: {
title: 'Human Connection',
titleTemplate: '%s - Human Connection',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: pkg.description }
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
},
/*
** Customize the progress-bar color
*/
loading: {
color: '#86b31e',
height: '2px',
duration: 20000
},
/*
** Global CSS
*/
css: ['~assets/styles/main.scss'],
/*
** Plugins to load before mounting the App
*/
plugins: [
{ src: '~/plugins/keep-alive.js', ssr: false },
{ src: '~/plugins/design-system.js', ssr: true },
{ src: '~/plugins/vue-directives.js', ssr: false },
{ src: '~/plugins/v-tooltip.js', ssr: false },
{ src: '~/plugins/izi-toast.js', ssr: false },
{ src: '~/plugins/vue-filters.js' }
],
router: {
middleware: ['authenticated'],
linkActiveClass: 'router-active-link'
},
/* router: {
routes: [
{
name: 'index',
path: '/',
component: 'pages/index.vue'
},
{
name: 'post-slug',
path: '/post/:slug',
component: 'pages/post/_slug.vue',
children: [
{
path: 'more-info',
component: 'pages/post/_slug.vue'
},
{
path: 'take-action',
component: 'pages/post/_slug.vue'
}
]
}
]
}, */
/*
** Nuxt.js modules
*/
modules: [
'@nuxtjs/apollo',
['@nuxtjs/dotenv', { only: envWhitelist }],
['nuxt-env', { keys: envWhitelist }]
],
// Give apollo module options
apollo: {
// tokenName: 'yourApolloTokenName', // optional, default: apollo-token
tokenExpires: 1, // optional, default: 7 (days)
// includeNodeModules: true, // optional, default: false (this includes graphql-tag for node_modules folder)
// optional
errorHandler(error) {
console.log(
'%cError',
'background: red; color: white; padding: 2px 4px; border-radius: 3px; font-weight: bold;',
error.message
)
},
// Watch loading state for all queries
// See 'Smart Query > options > watchLoading' for detail
// TODO: find a way to get this working
// watchLoading(isLoading) {
// console.log('Global loading', countModifier)
// this.$nuxt.$loading.start()
// },
// required
clientConfigs: {
default: '~/plugins/apollo-config.js',
}
},
manifest: {
name: 'Human-Connection.org',
description: 'Human-Connection.org',
theme_color: '#ffffff',
lang: 'de'
},
/*
** Build configuration
*/
build: {
/*
* Polyfill missing ES6 & 7 Methods to work on older Browser
*/
vendor: ['@babel/polyfill'],
/*
** You can extend webpack config here
*/
extend(config, ctx) {
// Run ESLint on save
if (ctx.isDev && ctx.isClient) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
}
}
}