From 5e9df5343328116f07f4d98884e559c0b3244052 Mon Sep 17 00:00:00 2001 From: xingyy <64720302+Concur-max@users.noreply.github.com> Date: Fri, 28 Feb 2025 10:40:42 +0800 Subject: [PATCH] 12 --- nuxt.config.js | 135 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 nuxt.config.js diff --git a/nuxt.config.js b/nuxt.config.js new file mode 100644 index 0000000..e144652 --- /dev/null +++ b/nuxt.config.js @@ -0,0 +1,135 @@ +import dotenv from 'dotenv' +import process from 'node:process' +import { currentLocales } from './i18n/i18n' +const envFile = process.env.ENV_FILE || '.env.test' +dotenv.config({ path: `./env/${envFile}` }) +const publicConfig = Object.entries(process.env) + .filter(([key]) => key.startsWith('NUXT_PUBLIC_')) + .reduce((config, [key, value]) => { + config[key] = value + return config + }, {}) + +export default defineNuxtConfig({ + modules: [ + '@vant/nuxt', + '@unocss/nuxt', + '@nuxtjs/i18n', + ], + image: { + provider: 'ipx', + format: ['webp'], + quality: 80, + }, + runtimeConfig: { + // 私有配置,只有在服务端可用 + apiSecret: process.env.NUXT_API_SECRET, + // 公共配置,客户端和服务端都可用 + public: publicConfig, + }, + css: [ + '@unocss/reset/tailwind.css', + '@/static/styles/default-theme.css', + ], + + postcss: { + plugins: { + 'autoprefixer': {}, + 'postcss-px-to-viewport': { + viewportWidth: 375, // 设计稿宽度 + viewportUnit: 'vmin', // 关键配置 + fontViewportUnit: 'vmin', // 字体单位 + unitPrecision: 5, + propList: ['*'], + selectorBlackList: [], + minPixelValue: 1, + mediaQuery: false, + exclude: /@nuxt/ + } + }, + }, + i18n: { + locales: currentLocales, + lazy: true, + strategy: 'no_prefix', + detectBrowserLanguage: { + useCookie: false, + cookieKey: 'i18n_redirected', + redirectOn: 'root', + alwaysRedirect: true, + }, + defaultLocale: 'zh-CN', + vueI18n: './i18n/i18n.config.ts', + }, + + app: { + layoutTransition: { + name: 'layout', + mode: 'out-in' + }, + head: { + viewport: 'width=device-width,initial-scale=1,viewport-fit=cover', + link: [ + { rel: 'icon', href: '/favicon.ico', sizes: 'any' }, + ], + meta: [ + { name: 'viewport', content: 'width=device-width, initial-scale=1, viewport-fit=cover,user-scalable=no' }, + { name: 'apple-mobile-web-app-capable', content: 'yes' }, + { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' }, + { name: 'theme-color', media: '(prefers-color-scheme: light)', content: '#ffffff' }, + { name: 'theme-color', media: '(prefers-color-scheme: dark)', content: '#222222' }, + ], + }, + }, + nitro: { + externals: { + inline: ['tslib'] // 将 tslib 内联到构建中 + } + }, + + build: { + transpile: ['tslib'] // 确保 tslib 被正确转译 + }, + vite: { + build: { + target: 'esnext', + }, + optimizeDeps: { + include: [ + '@intlify/core-base', + '@intlify/shared', + 'is-https', + ], + }, + }, + + experimental: { + typedPages: true, + }, + + devtools: { + vscode: { + // 配置为 cursor 编辑器 + editor: 'cursor' + } + }, + + typescript: { + shim: false, + }, + + features: { + // For UnoCSS + inlineStyles: false, + }, + + future: { + compatibilityVersion: 4, + }, + // 指定 Nuxt 应用程序的兼容性日期,确保应用程序在未来的 Nuxt 版本中保持稳定性 + compatibilityDate: '2025-01-09', + devServer: { + host: '0.0.0.0', // Set the host to 'localhost' + port: 3000, // Set the port to 3000 or any other port you prefer + }, +}) \ No newline at end of file