Files
zhdiary/packages/nuxt/nuxt.config.ts
T
2020-12-16 14:13:51 +07:00

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