v0.3.1: 版本号架构重构 — VERSION为唯一真相来源
- 新增 src/version.ts: 从文件读取版本(APP_VERSION_FILE → /app/VERSION)
- main.ts 改为 import { VERSION } from './version'(不再读 package.json)
- Dockerfile 构建时 COPY VERSION 到 /app/VERSION
- 新增 build.sh: 一键读取VERSION→构建→打标签
- docker-compose.yml: 清理重复/损坏内容, 添加 pansou network-alias
- package.json version 设为 0.0.0 (不再作为真相来源)
- 清理 .env 和 compose 注释中的过期版本号
This commit is contained in:
@@ -4,7 +4,7 @@ import cors from 'cors';
|
||||
import helmet from 'helmet';
|
||||
import morgan from 'morgan';
|
||||
import config from './config';
|
||||
const { version } = require('../package.json');
|
||||
import { VERSION as version } from "./version";
|
||||
import { getDb } from './database/database';
|
||||
import { connectRedis, disconnectRedis, reconnectRedis, testRedisConnection } from './middleware/cache';
|
||||
import rateLimiter from './middleware/rate-limit';
|
||||
|
||||
27
source_clean/src/version.ts
Normal file
27
source_clean/src/version.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import fs from 'fs';
|
||||
|
||||
/**
|
||||
* Read version from file. Order:
|
||||
* 1. APP_VERSION_FILE env var (e.g. /data/VERSION from mounted volume)
|
||||
* 2. /app/VERSION (built into Docker image)
|
||||
* 3. Fallback hardcoded default
|
||||
*/
|
||||
function readVersionFromFile(): string {
|
||||
const paths = [
|
||||
process.env.APP_VERSION_FILE, // from env
|
||||
'/app/VERSION', // built-in fallback
|
||||
].filter(Boolean) as string[];
|
||||
|
||||
for (const p of paths) {
|
||||
try {
|
||||
const content = fs.readFileSync(p, 'utf-8').trim();
|
||||
if (content) return content;
|
||||
} catch {
|
||||
// file doesn't exist, try next
|
||||
}
|
||||
}
|
||||
|
||||
return '0.0.0'; // ultimate fallback — should never happen
|
||||
}
|
||||
|
||||
export const VERSION = readVersionFromFile();
|
||||
Reference in New Issue
Block a user