106 lines
4.7 KiB
TypeScript
106 lines
4.7 KiB
TypeScript
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
export default defineNuxtConfig({
|
|
compatibilityDate: '2025-05-15',
|
|
devtools: { enabled: false },
|
|
ssr: true,
|
|
css: ["/assets/css/main.css", "/assets/css/additional.css"],
|
|
runtimeConfig: {
|
|
public: {
|
|
baseUrl: process?.env?.NUXT_PUBLIC_BASE_URL,
|
|
siteAuthor: process?.env?.NUXT_PUBLIC_SITE_AUTHOR,
|
|
siteName: process?.env?.NUXT_PUBLIC_SITE_NAME,
|
|
twitterUsername: process?.env?.NUXT_PUBLIC_TWITTER_USERNAME,
|
|
fontUrl: process?.env?.NUXT_PUBLIC_FONTS_URL
|
|
}
|
|
},
|
|
modules: ['@nuxt/content', '@nuxtjs/sitemap', '@nuxt/image', '@nuxt/icon'],
|
|
app: {
|
|
baseURL: process?.env?.NUXT_PUBLIC_BUILD_BASE_URL,
|
|
// pageTransition: { name: 'page', mode: 'out-in' },
|
|
head: {
|
|
titleTemplate: `%s / ${process?.env?.NUXT_PUBLIC_SITE_NAME}`,
|
|
meta: [
|
|
// { name: 'description', content: `Just another personal website, Created by ${process?.env?.NUXT_PUBLIC_AUTHOR}` }, // Included in pages/index.vue
|
|
{ name: 'referrer', content: 'strict-origin-when-cross-origin' },
|
|
{ name: 'robots', content: 'index,follow' },
|
|
{ name: 'author', content: process?.env?.NUXT_PUBLIC_AUTHOR },
|
|
{ name: 'application-name', content: process?.env?.NUXT_PUBLIC_SITE_NAME },
|
|
{ name: 'keywords', content: 'techit, techit thawiang, techit, techitwinner, thawiang' },
|
|
{ name: 'theme-color', content: '#0066FF' },
|
|
// Open Graph
|
|
{ property: 'og:title', content: `${process?.env?.NUXT_PUBLIC_SITE_NAME} by ${process?.env?.NUXT_PUBLIC_AUTHOR}` },
|
|
{ property: 'og:description', content: `Just another personal website, Created by ${process?.env?.NUXT_PUBLIC_AUTHOR}` },
|
|
{ property: 'og:url', content: process?.env?.NUXT_PUBLIC_BASE_URL },
|
|
{ property: 'og:site_name', content: process?.env?.NUXT_PUBLIC_SITE_NAME },
|
|
{ property: 'og:type', content: 'website' },
|
|
{ property: 'og:locale', content: 'en_US' },
|
|
// Twitter
|
|
{ name: 'twitter:creator', content: '@techitwinner' },
|
|
{ name: 'twitter:site', content: '@techitwinner' },
|
|
{ name: 'twitter:card', content: 'summary' },
|
|
{ name: 'twitter:url', content: process?.env?.NUXT_PUBLIC_BASE_URL },
|
|
{ name: 'twitter:image', content: '' },
|
|
// Apple Web App
|
|
{ name: 'mobile-web-app-capable', content: 'yes' },
|
|
{ name: 'apple-mobile-web-app-capable', content: 'yes' },
|
|
{ name: 'apple-mobile-web-app-status-bar-style', content: 'black' },
|
|
{ name: 'apple-mobile-web-app-title', content: process?.env?.NUXT_PUBLIC_AUTHOR }
|
|
],
|
|
htmlAttrs: {
|
|
lang: 'en',
|
|
},
|
|
charset: 'utf-8',
|
|
viewport: 'width=device-width, initial-scale=1',
|
|
link: [
|
|
{ rel: 'canonical', href: process?.env?.NUXT_PUBLIC_BASE_URL },
|
|
{ rel: 'icon', type: 'image/vnd.microsoft.icon', href: '/favicon.ico' },
|
|
// TYPEFACES
|
|
{ rel: 'preconnect', href: 'https://fonts.thawiang.com/' },
|
|
// { rel: 'stylesheet', href: 'https://fonts.thawiang.com/inter/inter.css' },
|
|
{ rel: 'stylesheet', href: 'https://fonts.thawiang.com/roboto/roboto.css' },
|
|
{ rel: 'stylesheet', href: 'https://fonts.thawiang.com/roboto-mono/roboto-mono.css' },
|
|
{ rel: 'stylesheet', href: 'https://fonts.thawiang.com/roboto-serif/roboto-serif.css' },,
|
|
{ rel: 'stylesheet', href: 'https://fonts.thawiang.com/noto-serif-thai/noto-serif-thai.css' },
|
|
{ rel: 'stylesheet', href: 'https://fonts.thawiang.com/sarabun/sarabun.css' },
|
|
{ rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200' }
|
|
],
|
|
script: [
|
|
{
|
|
type: 'application/ld+json',
|
|
innerHTML: JSON.stringify({
|
|
"@context": "https://schema.org",
|
|
"@type": "WebSite",
|
|
"name": process?.env?.NUXT_PUBLIC_SITE_NAME,
|
|
"url": process?.env?.NUXT_PUBLIC_BASE_URL
|
|
})
|
|
}
|
|
]
|
|
},
|
|
},
|
|
icon: {
|
|
customCollections: [
|
|
{ prefix: 'oundr', dir: './app/assets/icons/oundr' },
|
|
{ prefix: 'arpsh', dir: './app/assets/icons/arpsh' }
|
|
]
|
|
},
|
|
content: {
|
|
build: {
|
|
markdown: {
|
|
remarkPlugins: {
|
|
'remark-math': {},
|
|
},
|
|
rehypePlugins: {
|
|
'rehype-katex': {}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
experimental: {
|
|
// inlineSSRStyles: false,
|
|
},
|
|
routeRules: {
|
|
"*": { experimentalNoScripts: true }, // one level deep, render all pages statically
|
|
"posts/*": { experimentalNoScripts: true }, // one level deep, render all post pages statically
|
|
"fonts": { experimentalNoScripts: false }, // except /fonts
|
|
}
|
|
}) |