befly 3.13.5 → 3.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/befly.config.d.ts +1 -1
- package/dist/befly.config.js +12 -3
- package/dist/befly.js +19 -9
- package/dist/befly.min.js +10 -10
- package/dist/index.d.ts +2 -1
- package/dist/index.js +6 -3
- package/dist/types/befly.d.ts +6 -0
- package/dist/utils/processInfo.d.ts +4 -2
- package/dist/utils/processInfo.js +6 -5
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/befly.config.d.ts
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* 支持环境分离:befly.common.json + befly.development/production.json
|
|
5
5
|
*/
|
|
6
6
|
import type { BeflyOptions } from "./types/befly";
|
|
7
|
-
export declare function loadBeflyConfig(): Promise<BeflyOptions>;
|
|
7
|
+
export declare function loadBeflyConfig(nodeEnv?: string): Promise<BeflyOptions>;
|
package/dist/befly.config.js
CHANGED
|
@@ -71,15 +71,18 @@ const defaultOptions = {
|
|
|
71
71
|
// ========== Addon 配置 ==========
|
|
72
72
|
addons: {}
|
|
73
73
|
};
|
|
74
|
-
export async function loadBeflyConfig() {
|
|
75
|
-
const
|
|
76
|
-
const envSuffix =
|
|
74
|
+
export async function loadBeflyConfig(nodeEnv) {
|
|
75
|
+
const normalizedNodeEnv = normalizeNodeEnv(nodeEnv);
|
|
76
|
+
const envSuffix = normalizedNodeEnv === "production" ? "production" : "development";
|
|
77
77
|
// 使用 importDefault 加载 configs 目录下的配置文件。
|
|
78
78
|
// 合并顺序:defaultOptions ← befly.common.json ← befly.development/production.json
|
|
79
79
|
const configsDir = join(process.cwd(), "configs");
|
|
80
80
|
const commonConfig = await importDefault(join(configsDir, "befly.common.json"), {});
|
|
81
81
|
const envConfig = await importDefault(join(configsDir, `befly.${envSuffix}.json`), {});
|
|
82
82
|
const config = mergeAndConcat(defaultOptions, commonConfig, envConfig);
|
|
83
|
+
// 重要:nodeEnv 的来源只从 Befly.start(env) 的入参 env.NODE_ENV 传入,避免 process.env 在 bundle 阶段被常量折叠。
|
|
84
|
+
// 同时确保运行时行为(例如 Bun.serve development 标记)与实际选择的配置文件一致。
|
|
85
|
+
config.nodeEnv = normalizedNodeEnv;
|
|
83
86
|
// 配置校验:redis.prefix 作为 key 前缀,由 RedisHelper 统一拼接 ":"。
|
|
84
87
|
// 因此 prefix 本身不允许包含 ":",否则会导致 key 结构出现空段或多段分隔(例如 "prefix::key"),
|
|
85
88
|
// 在 RedisInsight 等工具里可能显示 [NO NAME] 空分组,且容易造成 key 管理混乱。
|
|
@@ -92,3 +95,9 @@ export async function loadBeflyConfig() {
|
|
|
92
95
|
}
|
|
93
96
|
return config;
|
|
94
97
|
}
|
|
98
|
+
function normalizeNodeEnv(nodeEnv) {
|
|
99
|
+
if (typeof nodeEnv === "string" && nodeEnv.trim()) {
|
|
100
|
+
return nodeEnv.trim();
|
|
101
|
+
}
|
|
102
|
+
return "development";
|
|
103
|
+
}
|
package/dist/befly.js
CHANGED
|
@@ -7608,13 +7608,14 @@ var defaultOptions = {
|
|
|
7608
7608
|
disableMenus: ["**/404", "**/403", "**/500", "**/login"],
|
|
7609
7609
|
addons: {}
|
|
7610
7610
|
};
|
|
7611
|
-
async function loadBeflyConfig() {
|
|
7612
|
-
const
|
|
7613
|
-
const envSuffix =
|
|
7611
|
+
async function loadBeflyConfig(nodeEnv) {
|
|
7612
|
+
const normalizedNodeEnv = normalizeNodeEnv(nodeEnv);
|
|
7613
|
+
const envSuffix = normalizedNodeEnv === "production" ? "production" : "development";
|
|
7614
7614
|
const configsDir = join(process.cwd(), "configs");
|
|
7615
7615
|
const commonConfig = await importDefault(join(configsDir, "befly.common.json"), {});
|
|
7616
7616
|
const envConfig = await importDefault(join(configsDir, `befly.${envSuffix}.json`), {});
|
|
7617
7617
|
const config2 = mergeAndConcat(defaultOptions, commonConfig, envConfig);
|
|
7618
|
+
config2.nodeEnv = normalizedNodeEnv;
|
|
7618
7619
|
const redisPrefix = config2?.redis?.prefix;
|
|
7619
7620
|
if (typeof redisPrefix === "string") {
|
|
7620
7621
|
const trimmedPrefix = redisPrefix.trim();
|
|
@@ -7624,6 +7625,12 @@ async function loadBeflyConfig() {
|
|
|
7624
7625
|
}
|
|
7625
7626
|
return config2;
|
|
7626
7627
|
}
|
|
7628
|
+
function normalizeNodeEnv(nodeEnv) {
|
|
7629
|
+
if (typeof nodeEnv === "string" && nodeEnv.trim()) {
|
|
7630
|
+
return nodeEnv.trim();
|
|
7631
|
+
}
|
|
7632
|
+
return "development";
|
|
7633
|
+
}
|
|
7627
7634
|
|
|
7628
7635
|
// checks/checkApi.ts
|
|
7629
7636
|
init_logger();
|
|
@@ -10559,9 +10566,10 @@ var calcPerfTime = (startTime, endTime = Bun.nanoseconds()) => {
|
|
|
10559
10566
|
};
|
|
10560
10567
|
|
|
10561
10568
|
// utils/processInfo.ts
|
|
10562
|
-
function getProcessRole() {
|
|
10563
|
-
const
|
|
10564
|
-
const
|
|
10569
|
+
function getProcessRole(env) {
|
|
10570
|
+
const runtimeEnv = env || {};
|
|
10571
|
+
const bunWorkerId = runtimeEnv.BUN_WORKER_ID;
|
|
10572
|
+
const pm2InstanceId = runtimeEnv.PM2_INSTANCE_ID;
|
|
10565
10573
|
if (bunWorkerId !== undefined) {
|
|
10566
10574
|
return {
|
|
10567
10575
|
role: bunWorkerId === "" ? "primary" : "worker",
|
|
@@ -15269,11 +15277,13 @@ class Befly {
|
|
|
15269
15277
|
hooks = [];
|
|
15270
15278
|
context = {};
|
|
15271
15279
|
config = null;
|
|
15272
|
-
async start() {
|
|
15280
|
+
async start(env) {
|
|
15273
15281
|
try {
|
|
15274
15282
|
const serverStartTime = Bun.nanoseconds();
|
|
15275
|
-
|
|
15283
|
+
const runtimeEnv = env || {};
|
|
15284
|
+
this.config = await loadBeflyConfig(runtimeEnv.NODE_ENV);
|
|
15276
15285
|
this.context.config = this.config;
|
|
15286
|
+
this.context.env = runtimeEnv;
|
|
15277
15287
|
const { apis, tables, plugins, hooks, addons } = await scanSources();
|
|
15278
15288
|
this.context.addons = addons;
|
|
15279
15289
|
await checkApi(apis);
|
|
@@ -15333,7 +15343,7 @@ class Befly {
|
|
|
15333
15343
|
}
|
|
15334
15344
|
});
|
|
15335
15345
|
const finalStartupTime = calcPerfTime(serverStartTime);
|
|
15336
|
-
const processRole = getProcessRole();
|
|
15346
|
+
const processRole = getProcessRole(runtimeEnv);
|
|
15337
15347
|
const roleLabel = processRole.role === "primary" ? "\u4E3B\u8FDB\u7A0B" : `\u5DE5\u4F5C\u8FDB\u7A0B #${processRole.instanceId}`;
|
|
15338
15348
|
const envLabel = processRole.env === "standalone" ? "" : ` [${processRole.env}]`;
|
|
15339
15349
|
Logger.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${roleLabel}${envLabel})`);
|