生产管理系统前端 - 发布脚本统一用一个环境文件

This commit is contained in:
2025-10-28 14:22:26 +08:00
parent 3286d4366a
commit 2c3227fb64
3 changed files with 67 additions and 23 deletions

2
crop-x/env/.env.dev vendored
View File

@@ -5,7 +5,7 @@ NODE_ENV=development
FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.dev.maimaiag.com FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.dev.maimaiag.com
# 后端 API 地址 # 后端 API 地址
BACKEND_BASE_URL=https://cavin-smart-crop-backend-app.dev.maimaiag.com BACKEND_BASE_URL=http://pengcode.tech:8080
# API 版本 # API 版本
API_VERSION=v1 API_VERSION=v1

View File

@@ -4,8 +4,8 @@ NODE_ENV=test
# 前端域名 # 前端域名
FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.test.maimaiag.com FRONTEND_BASE_URL=https://cavin-smart-crop-ui-app.test.maimaiag.com
# 后端 API 地址 (等待后端部署,先用开发环境的) # 后端 API 地址
BACKEND_BASE_URL=https://cavin-smart-crop-backend-app.dev.maimaiag.com BACKEND_BASE_URL=http://pengcode.tech:8080
# API 版本 # API 版本
API_VERSION=v1 API_VERSION=v1

View File

@@ -156,17 +156,68 @@ function generateApi(env) {
} }
/** /**
* 获取API基础URL * 从环境配置文件中读取配置
*/ */
function getApiBaseUrl(env) { function getEnvConfigFromFile(env) {
const apiUrls = { try {
dev: 'http://localhost:8080', // 开发环境使用本地后端 // 读取对应环境配置文件
test: 'http://pengcode.tech:8080', // 测试环境使用指定后端 const envFilePath = path.join(process.cwd(), 'env', `.env.${env}`);
uat: 'https://cavin-smart-crop-backend-app.uat.maimaiag.com',
prod: 'https://cavin-smart-crop-backend-app.prod.maimaiag.com' 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}环境`
}; };
return apiUrls[env] || apiUrls.dev; // 解析配置文件
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 config = getEnvConfigFromFile(env);
return config.BACKEND_BASE_URL;
}
/**
* 获取前端基础URL - 从环境配置文件中读取
*/
function getFrontendUrl(env) {
const config = getEnvConfigFromFile(env);
return config.FRONTEND_BASE_URL;
} }
/** /**
@@ -198,25 +249,18 @@ function buildNext(env) {
* 显示构建信息 * 显示构建信息
*/ */
function showBuildInfo(env, totalTime) { function showBuildInfo(env, totalTime) {
const config = { const envConfig = getEnvConfigFromFile(env);
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];
log('='.repeat(60), 'green'); log('='.repeat(60), 'green');
logSuccess(`构建完成!总耗时: ${totalTime}ms`); logSuccess(`构建完成!总耗时: ${totalTime}ms`);
logSuccess(`环境: ${envConfig.name} (${env})`); logSuccess(`环境: ${envConfig.ENV_DESCRIPTION} (${env})`);
logSuccess(`前端地址: ${envConfig.url}`); logSuccess(`前端地址: ${envConfig.FRONTEND_BASE_URL}`);
logSuccess(`后端地址: ${getApiBaseUrl(env)}`); logSuccess(`后端地址: ${envConfig.BACKEND_BASE_URL}`);
logSuccess('构建产物: .next 目录'); logSuccess('构建产物: .next 目录');
log('='.repeat(60), 'green'); log('='.repeat(60), 'green');
logInfo('部署建议:'); logInfo('部署建议:');
logInfo(` 将 .next 目录和 package.json 部署到 ${envConfig.name}`); logInfo(` 将 .next 目录和 package.json 部署到 ${envConfig.ENV_DESCRIPTION}`);
if (env !== 'dev') { if (env !== 'dev') {
logInfo(` 确保环境变量 NODE_ENV=production 和 NEXT_PUBLIC_ENV=${env}`); logInfo(` 确保环境变量 NODE_ENV=production 和 NEXT_PUBLIC_ENV=${env}`);
} }