87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
import { NuxtConfig } from '@nuxt/types'
|
|
|
|
import { getTheme } from './server/theme'
|
|
|
|
const config = async (): Promise<NuxtConfig> => {
|
|
const theme = getTheme()
|
|
const PORT = process.env.PORT || '3000'
|
|
|
|
return {
|
|
// Global page headers (https://go.nuxtjs.dev/config-head)
|
|
head: {
|
|
title: theme.title,
|
|
meta: [
|
|
{ charset: 'utf-8' },
|
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
|
{
|
|
hid: 'description',
|
|
name: 'description',
|
|
content: theme.description || '',
|
|
},
|
|
],
|
|
link: [
|
|
{ rel: 'icon', type: 'image/x-icon', href: '/media/favicon.ico' },
|
|
{
|
|
rel: 'stylesheet',
|
|
href: theme.awsm
|
|
? `https://unpkg.com/awsm.css/dist/awsm_theme_${theme.awsm}.min.css`
|
|
: 'https://unpkg.com/awsm.css/dist/awsm.min.css',
|
|
},
|
|
],
|
|
script: [
|
|
...(theme.analytics?.plausible
|
|
? [
|
|
{
|
|
src: 'https://plausible.io/js/plausible.js',
|
|
async: true,
|
|
defer: true,
|
|
'data-domain': theme.analytics?.plausible,
|
|
},
|
|
]
|
|
: []),
|
|
{
|
|
src:
|
|
'https://unpkg.com/@webcomponents/webcomponentsjs/webcomponents-loader.js',
|
|
defer: true,
|
|
},
|
|
{
|
|
type: 'module',
|
|
src: '/webcomponents.js',
|
|
},
|
|
],
|
|
},
|
|
|
|
// Global CSS (https://go.nuxtjs.dev/config-css)
|
|
css: [],
|
|
|
|
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
|
|
plugins: [
|
|
'~/plugins/axios-fix.ts',
|
|
'~/plugins/format.ts',
|
|
'~/plugins/remark42.client.js',
|
|
],
|
|
|
|
// Auto import components (https://go.nuxtjs.dev/config-components)
|
|
components: true,
|
|
|
|
// Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules)
|
|
buildModules: [
|
|
// https://go.nuxtjs.dev/typescript
|
|
'@nuxt/typescript-build',
|
|
],
|
|
|
|
// Modules (https://go.nuxtjs.dev/config-modules)
|
|
modules: ['@nuxtjs/axios'],
|
|
|
|
// Build Configuration (https://go.nuxtjs.dev/config-build)
|
|
build: {},
|
|
env: {
|
|
THEME: JSON.stringify(theme),
|
|
PORT,
|
|
},
|
|
serverMiddleware: [{ path: '/api', handler: '~/server/index.ts' }],
|
|
}
|
|
}
|
|
|
|
export default config
|