生产管理系统前端 - 发布脚本统一用一个环境文件
This commit is contained in:
2
crop-x/env/.env.dev
vendored
2
crop-x/env/.env.dev
vendored
@@ -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
|
||||||
|
|||||||
4
crop-x/env/.env.test
vendored
4
crop-x/env/.env.test
vendored
@@ -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
|
||||||
|
|||||||
@@ -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}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user