From 2c3227fb6491d61584d5f48a85b76221f10cf190 Mon Sep 17 00:00:00 2001 From: peng Date: Tue, 28 Oct 2025 14:22:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=89=8D=E7=AB=AF=20-=20=E5=8F=91=E5=B8=83=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E7=BB=9F=E4=B8=80=E7=94=A8=E4=B8=80=E4=B8=AA=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crop-x/env/.env.dev | 2 +- crop-x/env/.env.test | 4 +- crop-x/scripts/build.cjs | 84 ++++++++++++++++++++++++++++++---------- 3 files changed, 67 insertions(+), 23 deletions(-) diff --git a/crop-x/env/.env.dev b/crop-x/env/.env.dev index 6c47580..a300eea 100644 --- a/crop-x/env/.env.dev +++ b/crop-x/env/.env.dev @@ -5,7 +5,7 @@ NODE_ENV=development FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.dev.maimaiag.com # 后端 API 地址 -BACKEND_BASE_URL=https://cavin-smart-crop-backend-app.dev.maimaiag.com +BACKEND_BASE_URL=http://pengcode.tech:8080 # API 版本 API_VERSION=v1 diff --git a/crop-x/env/.env.test b/crop-x/env/.env.test index 413f02a..affb77f 100644 --- a/crop-x/env/.env.test +++ b/crop-x/env/.env.test @@ -4,8 +4,8 @@ NODE_ENV=test # 前端域名 FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.test.maimaiag.com -# 后端 API 地址 (等待后端部署,先用开发环境的) -BACKEND_BASE_URL=https://cavin-smart-crop-backend-app.dev.maimaiag.com +# 后端 API 地址 +BACKEND_BASE_URL=http://pengcode.tech:8080 # API 版本 API_VERSION=v1 diff --git a/crop-x/scripts/build.cjs b/crop-x/scripts/build.cjs index e196750..0101d2e 100644 --- a/crop-x/scripts/build.cjs +++ b/crop-x/scripts/build.cjs @@ -156,17 +156,68 @@ function generateApi(env) { } /** - * 获取API基础URL + * 从环境配置文件中读取配置 + */ +function getEnvConfigFromFile(env) { + try { + // 读取对应环境配置文件 + const envFilePath = path.join(process.cwd(), 'env', `.env.${env}`); + + if (!fs.existsSync(envFilePath)) { + logWarning(`环境配置文件不存在: ${envFilePath}`); + return { + FRONTEND_BASE_URL: 'http://localhost:3000', + BACKEND_BASE_URL: 'http://localhost:8080', + ENV_DESCRIPTION: `${env}环境` + }; + } + + const envContent = fs.readFileSync(envFilePath, 'utf8'); + const lines = envContent.split('\n'); + + const config = { + FRONTEND_BASE_URL: 'http://localhost:3000', + BACKEND_BASE_URL: 'http://localhost:8080', + ENV_DESCRIPTION: `${env}环境` + }; + + // 解析配置文件 + for (const line of lines) { + if (line.startsWith('FRONTEND_BASE_URL=')) { + config.FRONTEND_BASE_URL = line.split('=')[1].trim(); + } else if (line.startsWith('BACKEND_BASE_URL=')) { + config.BACKEND_BASE_URL = line.split('=')[1].trim(); + logInfo(`从 ${envFilePath} 读取到后端地址: ${config.BACKEND_BASE_URL}`); + } else if (line.startsWith('ENV_DESCRIPTION=')) { + config.ENV_DESCRIPTION = line.split('=')[1].trim(); + } + } + + return config; + } catch (error) { + logError(`读取环境配置失败: ${error.message}`); + return { + FRONTEND_BASE_URL: 'http://localhost:3000', + BACKEND_BASE_URL: 'http://localhost:8080', + ENV_DESCRIPTION: `${env}环境` + }; + } +} + +/** + * 获取API基础URL - 从环境配置文件中读取 */ function getApiBaseUrl(env) { - const apiUrls = { - dev: 'http://localhost:8080', // 开发环境使用本地后端 - test: 'http://pengcode.tech:8080', // 测试环境使用指定后端 - uat: 'https://cavin-smart-crop-backend-app.uat.maimaiag.com', - prod: 'https://cavin-smart-crop-backend-app.prod.maimaiag.com' - }; + const config = getEnvConfigFromFile(env); + return config.BACKEND_BASE_URL; +} - return apiUrls[env] || apiUrls.dev; +/** + * 获取前端基础URL - 从环境配置文件中读取 + */ +function getFrontendUrl(env) { + const config = getEnvConfigFromFile(env); + return config.FRONTEND_BASE_URL; } /** @@ -198,25 +249,18 @@ function buildNext(env) { * 显示构建信息 */ function showBuildInfo(env, totalTime) { - const config = { - dev: { name: '开发环境', url: 'https://cavin-smart-crop-ui-app.dev.maimaiag.com' }, - test: { name: '测试环境', url: 'https://cavin-smart-crop-ui-app.test.maimaiag.com' }, - uat: { name: 'UAT环境', url: 'https://cavin-smart-crop-ui-app.uat.maimaiag.com' }, - prod: { name: '生产环境', url: 'https://cavin-smart-crop-ui-app.prod.maimaiag.com' } - }; - - const envConfig = config[env]; + const envConfig = getEnvConfigFromFile(env); log('='.repeat(60), 'green'); logSuccess(`构建完成!总耗时: ${totalTime}ms`); - logSuccess(`环境: ${envConfig.name} (${env})`); - logSuccess(`前端地址: ${envConfig.url}`); - logSuccess(`后端地址: ${getApiBaseUrl(env)}`); + logSuccess(`环境: ${envConfig.ENV_DESCRIPTION} (${env})`); + logSuccess(`前端地址: ${envConfig.FRONTEND_BASE_URL}`); + logSuccess(`后端地址: ${envConfig.BACKEND_BASE_URL}`); logSuccess('构建产物: .next 目录'); log('='.repeat(60), 'green'); logInfo('部署建议:'); - logInfo(` 将 .next 目录和 package.json 部署到 ${envConfig.name}`); + logInfo(` 将 .next 目录和 package.json 部署到 ${envConfig.ENV_DESCRIPTION}`); if (env !== 'dev') { logInfo(` 确保环境变量 NODE_ENV=production 和 NEXT_PUBLIC_ENV=${env}`); }