-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
nuxt.config.js
116 lines (108 loc) · 3.16 KB
/
nuxt.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
let config = { ...require('config') }
config.basePath = process.env.NODE_ENV === 'development' ? '' : '/social'
const isBuilding = process.argv[2] === 'build'
if (process.env.NODE_ENV === 'production') {
const nuxtConfigInject = require('@koumoul/nuxt-config-inject')
if (isBuilding) config = nuxtConfigInject.prepare(config)
else nuxtConfigInject.replace(config, ['nuxt-dist/**/*', 'public/static/**/*'])
}
let vuetifyOptions = {}
if (process.env.NODE_ENV !== 'production' || isBuilding) {
const fr = require('vuetify/es5/locale/fr').default
const en = require('vuetify/es5/locale/en').default
vuetifyOptions = {
customVariables: ['~assets/variables.scss'],
theme: {
dark: config.theme.dark,
themes: {
light: config.theme.colors,
dark: { ...config.theme.colors, ...config.theme.darkColors }
}
},
treeShake: true,
defaultAssets: false,
lang: {
locales: { fr, en },
current: config.i18n.defaultLocale
}
}
}
module.exports = {
target: 'server',
ssr: false,
components: true,
srcDir: 'public/',
buildDir: 'nuxt-dist',
build: {
publicPath: '_nuxt/',
transpile: [ // Necessary for "à la carte" import of vuetify components
/@koumoul/,
/@data-fair/,
'easymde',
'marked',
'sanitize-html'
]
},
loading: { color: '#1e88e5' }, // Customize the progress bar color
plugins: [
{ src: '~plugins/session' },
{ src: '~plugins/ws', ssr: false },
{ src: '~plugins/dayjs' }
],
router: {
base: config.basePath
},
modules: ['@nuxtjs/axios', 'cookie-universal-nuxt', ['@nuxtjs/i18n', {
seo: false,
locales: ['fr', 'en'],
defaultLocale: config.i18n.defaultLocale,
vueI18nLoader: true,
strategy: 'no_prefix',
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_lang'
},
vueI18n: {
fallbackLocale: config.i18n.defaultLocale
}
}]],
axios: {
browserBaseURL: config.basePath
},
buildModules: [
['@nuxtjs/vuetify', { icons: { iconfont: 'mdi' } }],
['@nuxtjs/google-fonts', { download: true, display: 'swap', families: { Nunito: [100, 300, 400, 500, 700, 900] } }]
],
vuetify: vuetifyOptions,
css: [
'@mdi/font/css/materialdesignicons.min.css'
],
env: {
basePath: config.basePath,
publicUrl: config.basePath,
directoryUrl: '/simple-directory',
notifyUrl: '/notify',
theme: config.theme,
i18n: config.i18n,
messageMaxLength: config.messageMaxLength
// allowedEditRoles: config.allowedEditRoles
},
head: {
title: config.brand.title,
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'application', name: 'application-name', content: config.brand.title },
{ hid: 'description', name: 'description', content: config.brand.description },
{ hid: 'robots', name: 'robots', content: 'noindex' }
],
link: [],
style: []
}
}
if (config.theme.cssUrl) {
module.exports.head.link.push({ rel: 'stylesheet', href: config.theme.cssUrl })
}
if (config.theme.cssText) {
module.exports.head.style.push({ type: 'text/css', cssText: config.theme.cssText })
}