108 lines
2.7 KiB
TypeScript
108 lines
2.7 KiB
TypeScript
import { NuxtConfig } from '@nuxt/types'
|
|
|
|
import { SERVER_PORT, runServer } from './server/cli'
|
|
import { getTheme } from './server/theme'
|
|
|
|
const config = async (): Promise<NuxtConfig> => {
|
|
await runServer()
|
|
const theme = getTheme()
|
|
|
|
return {
|
|
target: 'static',
|
|
|
|
// 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'],
|
|
|
|
// 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'],
|
|
|
|
axios: {
|
|
proxy: true,
|
|
},
|
|
proxy: {
|
|
'/.netlify/functions': 'http://localhost:9000',
|
|
'/api': `http://localhost:${SERVER_PORT}`,
|
|
},
|
|
|
|
// Build Configuration (https://go.nuxtjs.dev/config-build)
|
|
build: {},
|
|
env: {
|
|
THEME: JSON.stringify(theme),
|
|
SERVER_PORT: SERVER_PORT.toString(),
|
|
},
|
|
hooks: {
|
|
generate: {
|
|
done() {
|
|
/**
|
|
* Do not kill
|
|
*/
|
|
// try {
|
|
// execSync(
|
|
// `lsof -i tcp:${SERVER_PORT} | grep LISTEN | awk '{print $2}' | xargs kill -9`
|
|
// )
|
|
// } catch (_) {}
|
|
process.exit(0)
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
export default config
|