Newer
Older
import config from './static/settings/globals.json'
export default {
target: 'static',
/**
* Global page headers (https://go.nuxtjs.dev/config-head)
*/
head: {
title: config.site_title || process.env.npm_package_name || '',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{
hid: 'description',
name: 'description',
content:
config.site_description || process.env.npm_package_description || '',
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
},
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.svg' }],
bodyAttrs: {
class: process.env.NODE_ENV === 'development' ? 'debug-screens' : '',
},
},
/**
* Customize the progress-bar color
*/
loading: { color: '#7c3aed' },
/**
* Global CSS (https://go.nuxtjs.dev/config-css)
*/
css: [],
/**
* Auto import components (https://go.nuxtjs.dev/config-components)
*/
components: true,
/**
* Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
*/
plugins: ['~plugins/vue-tailwind', '~/plugins/directives.client.js'],
/**
* Modules for dev and build (https://go.nuxtjs.dev/config-modules)
*/
buildModules: [
// https://composition-api.nuxtjs.org/
// TODO: remove it when nuxt3 released
'@nuxtjs/composition-api',
// https://go.nuxtjs.dev/eslint
'@nuxtjs/eslint-module',
// https://go.nuxtjs.dev/tailwindcss
'@nuxtjs/tailwindcss',
// https://github.com/nuxt-community/svg-module
'@nuxtjs/svg',
// https://color-mode.nuxtjs.org/
'@nuxtjs/color-mode',
// https://github.com/nuxt-community/fontawesome-module
[
'@nuxtjs/fontawesome',
{
component: 'fa', // component name
addCss: false,
icons: {
solid: [
'faHome',
'faSearch',
'faSkullCrossbones',
'faChevronLeft',
'faChevronRight',
'faArrowLeft',
'faArrowRight',
'faSun',
'faMoon',
'faHeart',
'faInfoCircle',
'faCheckCircle',
'faExclamationCircle',
'faExclamationTriangle',
'faExternalLinkAlt',
'faBars',
'faUserCircle',
'faGlobe',
'faAngry',
'faCompressArrowsAlt',
'faExpandArrowsAlt',
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
],
brands: [
'faCreativeCommonsNcEu',
'faDiaspora',
'faDiscourse',
'faGithub',
'faGitlab',
'faYoutube',
'faRocketchat',
'faFacebook',
'faTwitter',
'faDiscord',
'faApple',
'faAndroid',
'faBitcoin',
'faChrome',
'faFirefox',
'faCodepen',
'faDev',
'faDocker',
'faDropbox',
'faMastodon',
'faMedium',
'faNpm',
'faReddit',
'faSlack',
'faSoundcloud',
'faSpotify',
'faSteam',
'faTeamspeak',
'faTelegram',
'faTrello',
'faVimeo',
'faWhatsapp',
'faWikipediaW',
'faWordpress',
],
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
},
},
],
],
/**
* Nuxt.js modules (https://go.nuxtjs.dev/config-modules)
*/
modules: [
// https://go.nuxtjs.dev/axios
'@nuxtjs/axios',
// https://pwa.nuxtjs.org
'@nuxtjs/pwa',
// https://github.com/nuxt-community/dotenv-module
'@nuxtjs/dotenv',
// https://content.nuxtjs.org/fr
'@nuxt/content',
// https://i18n.nuxtjs.org
['nuxt-i18n', i18n],
// https://github.com/Chantouch/nuxt-clipboard
'nuxt-clipboard',
],
// Axios module configuration (https://go.nuxtjs.dev/config-axios)
axios: {},
// https://pwa.nuxtjs.org/manifest
pwa: {
meta: {
name: 'Monnaie Libre',
lang: 'fr',
theme_color: '#5b21b6',
description:
config.site_description || process.env.npm_package_description,
ogHost: 'monnaie-libre.fr',
twitterCard: 'summary_large_image',
twitterSite: '@monnaie_libre',
twitterCreator: '@monnaie_libre',
},
manifest: {
name: 'Monnaie Libre',
short_name: 'monnaie-libre.fr',
},
icon: {
fileName: 'icon-app.png',
},
},
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
// https://github.com/Chantouch/nuxt-clipboard
clipboard: {
autoSetContainer: true,
},
// https://content.nuxtjs.org/fr/configuration
content: {
markdown: {
remarkPlugins: ['remark-breaks'],
},
},
// https://color-mode.nuxtjs.org
colorMode: {
preference: 'system', // default value of $colorMode.preference
fallback: 'light', // fallback value if not system preference found
classSuffix: '',
},
/**
* Nuxt hooks
* https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-hooks
*/
hooks: {
// Netlifycms cannot create array in json file at root level and nuxt-content need an array. So, ressources.json is parsed to fetch 'ressources' key.
'content:file:beforeParse': (file) => {
if (file.extension === '.json' && /.*ressources.json$/.test(file.path)) {
file.data = JSON.stringify(JSON.parse(file.data).ressources)
} else if (file.extension === '.md') {
if (/^---.*layout:.*---/s.test(file.data)) {
let t = 0
const data = file.data.replace(/---/g, (match) => {
++t
if (t === 2) return '---\n<section>'
if (t > 2) return '</section>\n<section>'
return match
})
file.data = data + '\n</section>'
}
}
async 'content:file:beforeInsert'(document) {
if (document.extension === '.md') {
/*
* Add reading time
*/
document.readingTime = require('reading-time')(document.text)
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
/*
* Add lexique terms and check if terms exist
*/
// Search lexique terms
const lexiqueTerms = [
...document.text.matchAll(
/<lexique[>]([^<]*)<\/|<lexique\s+title="(.*)"/g
),
].map((match) => {
return (match[2] || match[1]).toLowerCase() // Priority for term in title=""
})
if (lexiqueTerms.length) {
// Add terms to document
document.lexiqueTerms = [...new Set(lexiqueTerms)] // remove duplicate
const { $content } = require('@nuxt/content')
// Check if term exists
if ($content) {
for (let i = 0; i < document.lexiqueTerms.length; i++) {
const term = document.lexiqueTerms[i]
const lexique = await $content('lexique')
.where({
$or: [
{ title: { $regex: [`^${term}$`, 'i'] } }, // case insensitive
{ synonyms: { $contains: term } }, // search in synonyms
],
})
.limit(1)
.fetch()
if (!lexique.length) {
// eslint-disable-next-line no-console
console.warn(
`Term "${term}" in file ${
document.path + document.extension
} doesn't exist`
)
}
}
}
}