1
0
elk/nuxt.config.ts

149 lines
3.5 KiB
TypeScript
Raw Normal View History

2022-11-27 15:54:56 +09:00
import Inspect from 'vite-plugin-inspect'
2022-12-18 09:15:19 +09:00
import { isCI, isDevelopment } from 'std-env'
import { isPreview } from './config/env'
import { i18n } from './config/i18n'
import { pwa } from './config/pwa'
import type { BuildInfo } from './types'
2022-11-13 14:34:43 +09:00
export default defineNuxtConfig({
typescript: {
tsConfig: {
exclude: ['../service-worker'],
vueCompilerOptions: {
jsxTemplates: true,
experimentalRfc436: true,
},
},
},
2022-11-13 14:34:43 +09:00
modules: [
'@vueuse/nuxt',
'@unocss/nuxt',
'@pinia/nuxt',
'@vue-macros/nuxt',
2022-11-28 19:24:05 +09:00
'@nuxtjs/i18n',
'@nuxtjs/color-mode',
'~/modules/purge-comments',
'~/modules/setup-components',
2023-01-08 20:18:58 +09:00
'~/modules/build-env',
'~/modules/pwa/index', // change to '@vite-pwa/nuxt' once released and remove pwa module
'~/modules/tauri/index',
2022-11-13 14:34:43 +09:00
],
experimental: {
payloadExtraction: false,
2022-11-13 14:34:43 +09:00
reactivityTransform: true,
inlineSSRStyles: false,
},
css: [
'@unocss/reset/tailwind.css',
2022-11-24 22:34:35 +09:00
'floating-vue/dist/style.css',
2022-11-14 01:05:32 +09:00
'~/styles/vars.css',
2022-11-16 01:39:25 +09:00
'~/styles/global.css',
'~/styles/tiptap.css',
2022-11-24 22:34:35 +09:00
'~/styles/dropdown.css',
2022-11-13 14:34:43 +09:00
],
2022-11-14 12:45:20 +09:00
alias: {
2022-12-21 10:06:39 +09:00
'querystring': 'rollup-plugin-node-polyfills/polyfills/qs',
'change-case': 'scule',
2022-11-14 12:45:20 +09:00
},
imports: {
dirs: [
'./composables/masto',
'./composables/push-notifications',
'./composables/settings',
'./composables/tiptap',
],
},
2022-11-16 02:14:10 +09:00
vite: {
define: {
2022-11-24 12:42:03 +09:00
'process.env.VSCODE_TEXTMATE_DEBUG': 'false',
2022-12-12 08:18:09 +09:00
'process.mock': ((!isCI || isPreview) && process.env.MOCK_USER) || 'false',
2022-11-16 02:14:10 +09:00
},
2022-11-23 08:27:01 +09:00
build: {
target: 'esnext',
2022-11-23 08:27:01 +09:00
},
2022-11-27 15:54:56 +09:00
plugins: [
Inspect(),
],
2022-11-16 02:14:10 +09:00
},
2022-11-14 12:33:09 +09:00
postcss: {
plugins: {
'postcss-nested': {},
},
},
2022-11-16 00:54:58 +09:00
runtimeConfig: {
deployUrl: !isCI
? 'http://localhost:5314'
: isPreview
? process.env.DEPLOY_PRIME_URL
: 'https://elk.zone',
cloudflare: {
accountId: '',
namespaceId: '',
apiToken: '',
},
discord: {
inviteUrl: 'https://chat.elk.zone',
},
github: {
// oauth flow
clientId: '',
clientSecret: '',
inviteToken: '',
},
public: {
env: '', // set in build-env module
buildInfo: {} as BuildInfo, // set in build-env module
2022-12-18 09:15:19 +09:00
pwaEnabled: !isDevelopment || process.env.VITE_DEV_PWA === 'true',
translateApi: '',
defaultServer: 'mas.to',
},
storage: {
driver: isCI ? 'cloudflare' : 'fs',
2022-12-01 06:28:55 +09:00
fsBase: 'node_modules/.cache/servers',
},
2022-11-16 00:54:58 +09:00
},
routeRules: {
2022-12-29 00:17:37 +09:00
'/api/list-servers': { swr: true },
'/manifest.webmanifest': {
headers: {
'Content-Type': 'application/manifest+json',
},
},
},
nitro: {
prerender: {
crawlLinks: false,
routes: ['/'],
},
},
app: {
keepalive: true,
head: {
// Prevent arbitrary zooming on mobile devices
viewport: 'width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0,viewport-fit=cover',
bodyAttrs: {
class: 'overflow-x-hidden',
},
link: [
{ rel: 'icon', href: '/favicon.ico', sizes: 'any' },
{ rel: 'icon', type: 'image/svg+xml', href: '/logo.svg' },
{ rel: 'apple-touch-icon', href: '/apple-touch-icon.png' },
],
2023-01-02 07:03:25 +09:00
meta: [
{ name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' },
],
},
},
colorMode: { classSuffix: '' },
i18n,
pwa,
2022-11-13 14:34:43 +09:00
})
declare global {
namespace NodeJS {
interface Process {
mock?: Record<string, any>
}
}
}