kopia lustrzana https://github.com/elk-zone/elk
				
				
				
			
		
			
				
	
	
		
			151 wiersze
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			151 wiersze
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
import { createResolver } from '@nuxt/kit'
 | 
						|
import Inspect from 'vite-plugin-inspect'
 | 
						|
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'
 | 
						|
 | 
						|
const { resolve } = createResolver(import.meta.url)
 | 
						|
 | 
						|
export default defineNuxtConfig({
 | 
						|
  typescript: {
 | 
						|
    tsConfig: {
 | 
						|
      exclude: ['../service-worker'],
 | 
						|
      vueCompilerOptions: {
 | 
						|
        jsxTemplates: true,
 | 
						|
        experimentalRfc436: true,
 | 
						|
      },
 | 
						|
    },
 | 
						|
  },
 | 
						|
  modules: [
 | 
						|
    '@vueuse/nuxt',
 | 
						|
    '@unocss/nuxt',
 | 
						|
    '@pinia/nuxt',
 | 
						|
    '@vue-macros/nuxt',
 | 
						|
    '@nuxtjs/i18n',
 | 
						|
    '@nuxtjs/color-mode',
 | 
						|
    '~/modules/purge-comments',
 | 
						|
    '~/modules/setup-components',
 | 
						|
    '~/modules/build-env',
 | 
						|
    '~/modules/tauri/index',
 | 
						|
    '~/modules/pwa/index', // change to '@vite-pwa/nuxt' once released and remove pwa module
 | 
						|
    '~/modules/stale-dep',
 | 
						|
  ],
 | 
						|
  experimental: {
 | 
						|
    payloadExtraction: false,
 | 
						|
    reactivityTransform: true,
 | 
						|
    inlineSSRStyles: false,
 | 
						|
  },
 | 
						|
  css: [
 | 
						|
    '@unocss/reset/tailwind.css',
 | 
						|
    'floating-vue/dist/style.css',
 | 
						|
    '~/styles/vars.css',
 | 
						|
    '~/styles/global.css',
 | 
						|
    '~/styles/tiptap.css',
 | 
						|
    '~/styles/dropdown.css',
 | 
						|
  ],
 | 
						|
  alias: {
 | 
						|
    'querystring': 'rollup-plugin-node-polyfills/polyfills/qs',
 | 
						|
    'change-case': 'scule',
 | 
						|
    'semver': resolve('./mocks/semver'),
 | 
						|
  },
 | 
						|
  imports: {
 | 
						|
    dirs: [
 | 
						|
      './composables/masto',
 | 
						|
      './composables/push-notifications',
 | 
						|
      './composables/settings',
 | 
						|
      './composables/tiptap',
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  vite: {
 | 
						|
    define: {
 | 
						|
      'process.env.VSCODE_TEXTMATE_DEBUG': 'false',
 | 
						|
      'process.mock': ((!isCI || isPreview) && process.env.MOCK_USER) || 'false',
 | 
						|
    },
 | 
						|
    build: {
 | 
						|
      target: 'esnext',
 | 
						|
    },
 | 
						|
    plugins: [
 | 
						|
      Inspect(),
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  postcss: {
 | 
						|
    plugins: {
 | 
						|
      'postcss-nested': {},
 | 
						|
    },
 | 
						|
  },
 | 
						|
  runtimeConfig: {
 | 
						|
    cloudflare: {
 | 
						|
      accountId: '',
 | 
						|
      namespaceId: '',
 | 
						|
      apiToken: '',
 | 
						|
    },
 | 
						|
    public: {
 | 
						|
      env: '', // set in build-env module
 | 
						|
      buildInfo: {} as BuildInfo, // set in build-env module
 | 
						|
      pwaEnabled: !isDevelopment || process.env.VITE_DEV_PWA === 'true',
 | 
						|
      translateApi: '',
 | 
						|
      defaultServer: 'mas.to',
 | 
						|
    },
 | 
						|
    storage: {
 | 
						|
      driver: isCI ? 'cloudflare' : 'fs',
 | 
						|
      fsBase: 'node_modules/.cache/servers',
 | 
						|
    },
 | 
						|
  },
 | 
						|
  routeRules: {
 | 
						|
    '/api/list-servers': { swr: true },
 | 
						|
    '/manifest.webmanifest': {
 | 
						|
      headers: {
 | 
						|
        'Content-Type': 'application/manifest+json',
 | 
						|
      },
 | 
						|
    },
 | 
						|
  },
 | 
						|
  nitro: {
 | 
						|
    prerender: {
 | 
						|
      crawlLinks: true,
 | 
						|
      routes: ['/'],
 | 
						|
      ignore: ['/settings'],
 | 
						|
    },
 | 
						|
  },
 | 
						|
  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' },
 | 
						|
      ],
 | 
						|
      meta: [
 | 
						|
        { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' },
 | 
						|
        // open graph social image
 | 
						|
        { property: 'og:title', content: 'Elk' },
 | 
						|
        { property: 'og:description', content: 'A nimble Mastodon web client' },
 | 
						|
        { property: 'og:type', content: 'website' },
 | 
						|
        { property: 'og:image', content: 'https://elk.zone/elk-og.png' },
 | 
						|
        { property: 'og:image:width', content: '3800' },
 | 
						|
        { property: 'og:image:height', content: '1900' },
 | 
						|
        { property: 'og:site_name', content: 'Elk' },
 | 
						|
        { property: 'twitter:site', content: '@elk_zone' },
 | 
						|
        { property: 'twitter:card', content: 'summary_large_image' },
 | 
						|
      ],
 | 
						|
    },
 | 
						|
  },
 | 
						|
  colorMode: { classSuffix: '' },
 | 
						|
  i18n,
 | 
						|
  pwa,
 | 
						|
})
 | 
						|
 | 
						|
declare global {
 | 
						|
  namespace NodeJS {
 | 
						|
    interface Process {
 | 
						|
      mock?: Record<string, any>
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |