This commit is contained in:
2026-09-22 16:01:25 +01:00
parent 1bf1b651db
commit 1c52617728
16 changed files with 166 additions and 43 deletions
+14 -2
View File
@@ -1,9 +1,10 @@
import { Command } from "commander"; import { Command } from "commander";
import { log } from "../../utils/log"; import { log } from "../../utils/log";
import grabDirNames from "../../utils/grab-dir-names"; import grabDirNames from "../../utils/grab-dir-names";
import { rmSync } from "fs"; import { rmSync, writeFileSync } from "fs";
import bunextInit from "../../functions/bunext-init"; import bunextInit from "../../functions/bunext-init";
const { HYDRATION_DST_DIR, BUNX_CWD_PAGES_REWRITE_DIR } = grabDirNames(); import pagesSSRBundler from "../../functions/bundler/pages-ssr-bundler";
const { HYDRATION_DST_DIR, BUNX_CWD_PAGES_REWRITE_DIR, BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON, BUNX_CWD_MODULE_CACHE_DIR, } = grabDirNames();
export default function () { export default function () {
return new Command("build") return new Command("build")
.description("Build Project") .description("Build Project")
@@ -11,10 +12,21 @@ export default function () {
try { try {
rmSync(HYDRATION_DST_DIR, { recursive: true }); rmSync(HYDRATION_DST_DIR, { recursive: true });
rmSync(BUNX_CWD_PAGES_REWRITE_DIR, { recursive: true }); rmSync(BUNX_CWD_PAGES_REWRITE_DIR, { recursive: true });
rmSync(BUNX_CWD_MODULE_CACHE_DIR, {
recursive: true,
force: true,
});
} }
catch (error) { } catch (error) { }
global.BUNEXT_SKIPPED_BROWSER_MODULES = new Set(); global.BUNEXT_SKIPPED_BROWSER_MODULES = new Set();
await bunextInit({ build_only: true }); await bunextInit({ build_only: true });
// await pagesSSRBundler();
if (global.BUNEXT_BUNDLER_CTX_MAP) {
writeFileSync(BUNDLER_CTX_MAP_JSON, JSON.stringify(global.BUNEXT_BUNDLER_CTX_MAP), "utf-8");
}
if (global.BUNEXT_SSR_BUNDLER_CTX_MAP) {
writeFileSync(SSR_BUNDLER_CTX_MAP_JSON, JSON.stringify(global.BUNEXT_SSR_BUNDLER_CTX_MAP), "utf-8");
}
log.success("Modules Built Successfully!"); log.success("Modules Built Successfully!");
process.exit(); process.exit();
}); });
+7 -1
View File
@@ -2,7 +2,8 @@ import { Command } from "commander";
import path from "path"; import path from "path";
import grabDirNames from "../../utils/grab-dir-names"; import grabDirNames from "../../utils/grab-dir-names";
import writeErrorFile from "../../functions/write-error-file"; import writeErrorFile from "../../functions/write-error-file";
import { existsSync } from "fs"; import { existsSync, rmSync } from "fs";
const { BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON } = grabDirNames();
let retries = 0; let retries = 0;
let timeout; let timeout;
const MAX_RETRIES = 5; const MAX_RETRIES = 5;
@@ -10,6 +11,11 @@ export default function () {
return new Command("dev") return new Command("dev")
.description("Run development server") .description("Run development server")
.action(async () => { .action(async () => {
try {
rmSync(SSR_BUNDLER_CTX_MAP_JSON, { recursive: true });
rmSync(BUNDLER_CTX_MAP_JSON, { recursive: true });
}
catch (error) { }
await dev(); await dev();
}); });
} }
+19
View File
@@ -1,6 +1,25 @@
import { readFileSync } from "fs";
import bunextInit from "../../functions/bunext-init"; import bunextInit from "../../functions/bunext-init";
import startServer from "../../functions/server/start-server"; import startServer from "../../functions/server/start-server";
import grabDirNames from "../../utils/grab-dir-names";
import { log } from "../../utils/log"; import { log } from "../../utils/log";
const { BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON } = grabDirNames();
log.info("Starting production server ..."); log.info("Starting production server ...");
try {
const bundler_ctx_json = JSON.parse(readFileSync(BUNDLER_CTX_MAP_JSON, "utf-8"));
if (bundler_ctx_json) {
global.BUNEXT_BUNDLER_CTX_MAP = bundler_ctx_json;
}
}
catch (error) {
// log.error(`Couldn't set global bundler CTX map: ${error.message}`);
}
try {
const ssr_bundler_ctx_json = JSON.parse(readFileSync(SSR_BUNDLER_CTX_MAP_JSON, "utf-8"));
if (ssr_bundler_ctx_json) {
global.BUNEXT_SSR_BUNDLER_CTX_MAP = ssr_bundler_ctx_json;
}
}
catch (error) { }
await bunextInit(); await bunextInit();
await startServer(); await startServer();
@@ -5,11 +5,11 @@ import buildOnstartErrorHandler from "../build-on-start-error-handler";
import _ from "lodash"; import _ from "lodash";
import pagesSSRBundler from "../pages-ssr-bundler"; import pagesSSRBundler from "../pages-ssr-bundler";
import grabDirNames from "../../../utils/grab-dir-names"; import grabDirNames from "../../../utils/grab-dir-names";
import { cpSync, existsSync, mkdirSync, rmSync } from "fs"; import { cpSync, existsSync, mkdirSync, rmSync, writeFileSync } from "fs";
import fullRebuild from "../../server/full-rebuild"; import fullRebuild from "../../server/full-rebuild";
import path from "path"; import path from "path";
import cleanupLogsDirs from "../../cleanup-logs-dir"; import cleanupLogsDirs from "../../cleanup-logs-dir";
const { BUNX_BUNDLER_ERROR_EXIT_FILE, BUNX_ERROR_LOGS_DIR } = grabDirNames(); const { BUNX_BUNDLER_ERROR_EXIT_FILE, BUNX_ERROR_LOGS_DIR, BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON, } = grabDirNames();
let build_start = 0; let build_start = 0;
const MAX_BUILD_STARTS = 2; const MAX_BUILD_STARTS = 2;
export default function esbuildCTXArtifactTracker({ entryToPage, post_build_fn, build_only, }) { export default function esbuildCTXArtifactTracker({ entryToPage, post_build_fn, build_only, }) {
+11 -7
View File
@@ -11,9 +11,14 @@ import watcherEsbuildCTX from "./server/watcher-esbuild-ctx";
const dirNames = grabDirNames(); const dirNames = grabDirNames();
const { PAGES_DIR } = dirNames; const { PAGES_DIR } = dirNames;
export default async function bunextInit(params) { export default async function bunextInit(params) {
const are_modules_aready_built = global.BUNEXT_BUNDLER_CTX_MAP && global.BUNEXT_SSR_BUNDLER_CTX_MAP;
global.BUNEXT_HMR_CONTROLLERS = []; global.BUNEXT_HMR_CONTROLLERS = [];
if (!global.BUNEXT_BUNDLER_CTX_MAP) {
global.BUNEXT_BUNDLER_CTX_MAP = {}; global.BUNEXT_BUNDLER_CTX_MAP = {};
}
if (!global.BUNEXT_SSR_BUNDLER_CTX_MAP) {
global.BUNEXT_SSR_BUNDLER_CTX_MAP = {}; global.BUNEXT_SSR_BUNDLER_CTX_MAP = {};
}
// global.BUNEXT_API_ROUTES_BUNDLER_CTX_MAP = {}; // global.BUNEXT_API_ROUTES_BUNDLER_CTX_MAP = {};
global.BUNEXT_BUNDLER_REBUILDS = 0; global.BUNEXT_BUNDLER_REBUILDS = 0;
global.BUNEXT_REBUILD_RETRIES = 0; global.BUNEXT_REBUILD_RETRIES = 0;
@@ -35,7 +40,7 @@ export default async function bunextInit(params) {
const is_dev = isDevelopment(); const is_dev = isDevelopment();
if (params?.build_only) { if (params?.build_only) {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
await allPagesESBuildContextBundler(); await allPagesESBuildContextBundler({ build_only: params.build_only });
} }
else if (is_dev) { else if (is_dev) {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
@@ -46,15 +51,14 @@ export default async function bunextInit(params) {
}); });
watcherEsbuildCTX(); watcherEsbuildCTX();
} }
else {
if (are_modules_aready_built) {
log.success(`All modules already built.`);
}
else { else {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
await allPagesESBuildContextBundler({ start: true }); await allPagesESBuildContextBundler({ start: true });
}
cron(); cron();
} }
} }
// process.on("exit", (code) => {
// Bun.spawn([process.execPath, ...process.argv.slice(1)], {
// stdio: ["inherit", "inherit", "inherit"],
// env: process.env,
// });
// });
-4
View File
@@ -10,10 +10,6 @@ export default async function () {
recursive: true, recursive: true,
force: true, force: true,
}); });
rmSync(dirNames.BUNX_CWD_MODULE_CACHE_DIR, {
recursive: true,
force: true,
});
if (dirNames.ROOT_DIR.startsWith(dirNames.BUNX_ROOT_DIR) && if (dirNames.ROOT_DIR.startsWith(dirNames.BUNX_ROOT_DIR) &&
!dirNames.ROOT_DIR.includes(`${dirNames.BUNX_ROOT_DIR}/test/`)) { !dirNames.ROOT_DIR.includes(`${dirNames.BUNX_ROOT_DIR}/test/`)) {
log.error(`Can't Run From this Directory => ${dirNames.ROOT_DIR}`); log.error(`Can't Run From this Directory => ${dirNames.ROOT_DIR}`);
+2
View File
@@ -26,5 +26,7 @@ export type DirNames = {
BUNX_BUNDLER_ERROR_EXIT_FILE: string; BUNX_BUNDLER_ERROR_EXIT_FILE: string;
BUNX_ERROR_LOGS_DIR: string; BUNX_ERROR_LOGS_DIR: string;
BUNX_LOGS_DIR: string; BUNX_LOGS_DIR: string;
BUNDLER_CTX_MAP_JSON: string;
SSR_BUNDLER_CTX_MAP_JSON: string;
}; };
export default function grabDirNames(): DirNames; export default function grabDirNames(): DirNames;
+4
View File
@@ -29,6 +29,8 @@ export default function grabDirNames() {
const BUNX_ROOT_500_PRESET_COMPONENT = path.join(BUNX_ROOT_PRESETS_DIR, `${BUNX_ROOT_500_FILE_NAME}.tsx`); const BUNX_ROOT_500_PRESET_COMPONENT = path.join(BUNX_ROOT_PRESETS_DIR, `${BUNX_ROOT_500_FILE_NAME}.tsx`);
const BUNX_ROOT_404_FILE_NAME = `not-found`; const BUNX_ROOT_404_FILE_NAME = `not-found`;
const BUNX_ROOT_404_PRESET_COMPONENT = path.join(BUNX_ROOT_PRESETS_DIR, `${BUNX_ROOT_404_FILE_NAME}.tsx`); const BUNX_ROOT_404_PRESET_COMPONENT = path.join(BUNX_ROOT_PRESETS_DIR, `${BUNX_ROOT_404_FILE_NAME}.tsx`);
const BUNDLER_CTX_MAP_JSON = path.join(BUNX_CWD_DIR, "bundler-ctx-map.json");
const SSR_BUNDLER_CTX_MAP_JSON = path.join(BUNX_CWD_DIR, "ssr-bundler-ctx-map.json");
return { return {
ROOT_DIR, ROOT_DIR,
SRC_DIR, SRC_DIR,
@@ -57,6 +59,8 @@ export default function grabDirNames() {
BUNX_BUNDLER_ERROR_EXIT_FILE, BUNX_BUNDLER_ERROR_EXIT_FILE,
BUNX_ERROR_LOGS_DIR, BUNX_ERROR_LOGS_DIR,
BUNX_LOGS_DIR, BUNX_LOGS_DIR,
BUNDLER_CTX_MAP_JSON,
SSR_BUNDLER_CTX_MAP_JSON,
}; };
} }
// const NODE_MODULES_DIR = path.resolve( // const NODE_MODULES_DIR = path.resolve(
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/bunext", "name": "@moduletrace/bunext",
"version": "1.1.7", "version": "1.1.8",
"main": "dist/index.js", "main": "dist/index.js",
"module": "index.ts", "module": "index.ts",
"dependencies": { "dependencies": {
+30 -2
View File
@@ -1,10 +1,17 @@
import { Command } from "commander"; import { Command } from "commander";
import { log } from "../../utils/log"; import { log } from "../../utils/log";
import grabDirNames from "../../utils/grab-dir-names"; import grabDirNames from "../../utils/grab-dir-names";
import { rmSync } from "fs"; import { rmSync, writeFileSync } from "fs";
import bunextInit from "../../functions/bunext-init"; import bunextInit from "../../functions/bunext-init";
import pagesSSRBundler from "../../functions/bundler/pages-ssr-bundler";
const { HYDRATION_DST_DIR, BUNX_CWD_PAGES_REWRITE_DIR } = grabDirNames(); const {
HYDRATION_DST_DIR,
BUNX_CWD_PAGES_REWRITE_DIR,
BUNDLER_CTX_MAP_JSON,
SSR_BUNDLER_CTX_MAP_JSON,
BUNX_CWD_MODULE_CACHE_DIR,
} = grabDirNames();
export default function () { export default function () {
return new Command("build") return new Command("build")
@@ -13,11 +20,32 @@ export default function () {
try { try {
rmSync(HYDRATION_DST_DIR, { recursive: true }); rmSync(HYDRATION_DST_DIR, { recursive: true });
rmSync(BUNX_CWD_PAGES_REWRITE_DIR, { recursive: true }); rmSync(BUNX_CWD_PAGES_REWRITE_DIR, { recursive: true });
rmSync(BUNX_CWD_MODULE_CACHE_DIR, {
recursive: true,
force: true,
});
} catch (error) {} } catch (error) {}
global.BUNEXT_SKIPPED_BROWSER_MODULES = new Set<string>(); global.BUNEXT_SKIPPED_BROWSER_MODULES = new Set<string>();
await bunextInit({ build_only: true }); await bunextInit({ build_only: true });
// await pagesSSRBundler();
if (global.BUNEXT_BUNDLER_CTX_MAP) {
writeFileSync(
BUNDLER_CTX_MAP_JSON,
JSON.stringify(global.BUNEXT_BUNDLER_CTX_MAP),
"utf-8",
);
}
if (global.BUNEXT_SSR_BUNDLER_CTX_MAP) {
writeFileSync(
SSR_BUNDLER_CTX_MAP_JSON,
JSON.stringify(global.BUNEXT_SSR_BUNDLER_CTX_MAP),
"utf-8",
);
}
log.success("Modules Built Successfully!"); log.success("Modules Built Successfully!");
+8 -1
View File
@@ -3,7 +3,9 @@ import path from "path";
import type { BunSpawnOptions } from "../../types"; import type { BunSpawnOptions } from "../../types";
import grabDirNames from "../../utils/grab-dir-names"; import grabDirNames from "../../utils/grab-dir-names";
import writeErrorFile from "../../functions/write-error-file"; import writeErrorFile from "../../functions/write-error-file";
import { existsSync } from "fs"; import { existsSync, rmSync } from "fs";
const { BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON } = grabDirNames();
let retries = 0; let retries = 0;
let timeout: any; let timeout: any;
@@ -13,6 +15,11 @@ export default function () {
return new Command("dev") return new Command("dev")
.description("Run development server") .description("Run development server")
.action(async () => { .action(async () => {
try {
rmSync(SSR_BUNDLER_CTX_MAP_JSON, { recursive: true });
rmSync(BUNDLER_CTX_MAP_JSON, { recursive: true });
} catch (error) {}
await dev(); await dev();
}); });
} }
+27
View File
@@ -1,9 +1,36 @@
import { readFileSync } from "fs";
import bunextInit from "../../functions/bunext-init"; import bunextInit from "../../functions/bunext-init";
import startServer from "../../functions/server/start-server"; import startServer from "../../functions/server/start-server";
import grabDirNames from "../../utils/grab-dir-names";
import { log } from "../../utils/log"; import { log } from "../../utils/log";
import type { BundlerCTXMap } from "../../types";
const { BUNDLER_CTX_MAP_JSON, SSR_BUNDLER_CTX_MAP_JSON } = grabDirNames();
log.info("Starting production server ..."); log.info("Starting production server ...");
try {
const bundler_ctx_json = JSON.parse(
readFileSync(BUNDLER_CTX_MAP_JSON, "utf-8"),
) as { [k: string]: BundlerCTXMap } | undefined;
if (bundler_ctx_json) {
global.BUNEXT_BUNDLER_CTX_MAP = bundler_ctx_json;
}
} catch (error: any) {
// log.error(`Couldn't set global bundler CTX map: ${error.message}`);
}
try {
const ssr_bundler_ctx_json = JSON.parse(
readFileSync(SSR_BUNDLER_CTX_MAP_JSON, "utf-8"),
) as { [k: string]: BundlerCTXMap } | undefined;
if (ssr_bundler_ctx_json) {
global.BUNEXT_SSR_BUNDLER_CTX_MAP = ssr_bundler_ctx_json;
}
} catch (error) {}
await bunextInit(); await bunextInit();
await startServer(); await startServer();
@@ -6,12 +6,17 @@ import buildOnstartErrorHandler from "../build-on-start-error-handler";
import _ from "lodash"; import _ from "lodash";
import pagesSSRBundler from "../pages-ssr-bundler"; import pagesSSRBundler from "../pages-ssr-bundler";
import grabDirNames from "../../../utils/grab-dir-names"; import grabDirNames from "../../../utils/grab-dir-names";
import { cpSync, existsSync, mkdirSync, rmSync } from "fs"; import { cpSync, existsSync, mkdirSync, rmSync, writeFileSync } from "fs";
import fullRebuild from "../../server/full-rebuild"; import fullRebuild from "../../server/full-rebuild";
import path from "path"; import path from "path";
import cleanupLogsDirs from "../../cleanup-logs-dir"; import cleanupLogsDirs from "../../cleanup-logs-dir";
const { BUNX_BUNDLER_ERROR_EXIT_FILE, BUNX_ERROR_LOGS_DIR } = grabDirNames(); const {
BUNX_BUNDLER_ERROR_EXIT_FILE,
BUNX_ERROR_LOGS_DIR,
BUNDLER_CTX_MAP_JSON,
SSR_BUNDLER_CTX_MAP_JSON,
} = grabDirNames();
let build_start = 0; let build_start = 0;
const MAX_BUILD_STARTS = 2; const MAX_BUILD_STARTS = 2;
+13 -8
View File
@@ -63,9 +63,16 @@ type Params = {
}; };
export default async function bunextInit(params?: Params) { export default async function bunextInit(params?: Params) {
const are_modules_aready_built =
global.BUNEXT_BUNDLER_CTX_MAP && global.BUNEXT_SSR_BUNDLER_CTX_MAP;
global.BUNEXT_HMR_CONTROLLERS = []; global.BUNEXT_HMR_CONTROLLERS = [];
if (!global.BUNEXT_BUNDLER_CTX_MAP) {
global.BUNEXT_BUNDLER_CTX_MAP = {}; global.BUNEXT_BUNDLER_CTX_MAP = {};
}
if (!global.BUNEXT_SSR_BUNDLER_CTX_MAP) {
global.BUNEXT_SSR_BUNDLER_CTX_MAP = {}; global.BUNEXT_SSR_BUNDLER_CTX_MAP = {};
}
// global.BUNEXT_API_ROUTES_BUNDLER_CTX_MAP = {}; // global.BUNEXT_API_ROUTES_BUNDLER_CTX_MAP = {};
global.BUNEXT_BUNDLER_REBUILDS = 0; global.BUNEXT_BUNDLER_REBUILDS = 0;
global.BUNEXT_REBUILD_RETRIES = 0; global.BUNEXT_REBUILD_RETRIES = 0;
@@ -94,7 +101,7 @@ export default async function bunextInit(params?: Params) {
if (params?.build_only) { if (params?.build_only) {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
await allPagesESBuildContextBundler(); await allPagesESBuildContextBundler({ build_only: params.build_only });
} else if (is_dev) { } else if (is_dev) {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
await allPagesESBuildContextBundler({ await allPagesESBuildContextBundler({
@@ -103,16 +110,14 @@ export default async function bunextInit(params?: Params) {
}, },
}); });
watcherEsbuildCTX(); watcherEsbuildCTX();
} else {
if (are_modules_aready_built) {
log.success(`All modules already built.`);
} else { } else {
log.build(`Building Modules ...`); log.build(`Building Modules ...`);
await allPagesESBuildContextBundler({ start: true }); await allPagesESBuildContextBundler({ start: true });
}
cron(); cron();
} }
} }
// process.on("exit", (code) => {
// Bun.spawn([process.execPath, ...process.argv.slice(1)], {
// stdio: ["inherit", "inherit", "inherit"],
// env: process.env,
// });
// });
-5
View File
@@ -14,11 +14,6 @@ export default async function () {
force: true, force: true,
}); });
rmSync(dirNames.BUNX_CWD_MODULE_CACHE_DIR, {
recursive: true,
force: true,
});
if ( if (
dirNames.ROOT_DIR.startsWith(dirNames.BUNX_ROOT_DIR) && dirNames.ROOT_DIR.startsWith(dirNames.BUNX_ROOT_DIR) &&
!dirNames.ROOT_DIR.includes(`${dirNames.BUNX_ROOT_DIR}/test/`) !dirNames.ROOT_DIR.includes(`${dirNames.BUNX_ROOT_DIR}/test/`)
+13
View File
@@ -28,6 +28,8 @@ export type DirNames = {
BUNX_BUNDLER_ERROR_EXIT_FILE: string; BUNX_BUNDLER_ERROR_EXIT_FILE: string;
BUNX_ERROR_LOGS_DIR: string; BUNX_ERROR_LOGS_DIR: string;
BUNX_LOGS_DIR: string; BUNX_LOGS_DIR: string;
BUNDLER_CTX_MAP_JSON: string;
SSR_BUNDLER_CTX_MAP_JSON: string;
}; };
export default function grabDirNames(): DirNames { export default function grabDirNames(): DirNames {
@@ -84,6 +86,15 @@ export default function grabDirNames(): DirNames {
`${BUNX_ROOT_404_FILE_NAME}.tsx`, `${BUNX_ROOT_404_FILE_NAME}.tsx`,
); );
const BUNDLER_CTX_MAP_JSON = path.join(
BUNX_CWD_DIR,
"bundler-ctx-map.json",
);
const SSR_BUNDLER_CTX_MAP_JSON = path.join(
BUNX_CWD_DIR,
"ssr-bundler-ctx-map.json",
);
return { return {
ROOT_DIR, ROOT_DIR,
SRC_DIR, SRC_DIR,
@@ -112,6 +123,8 @@ export default function grabDirNames(): DirNames {
BUNX_BUNDLER_ERROR_EXIT_FILE, BUNX_BUNDLER_ERROR_EXIT_FILE,
BUNX_ERROR_LOGS_DIR, BUNX_ERROR_LOGS_DIR,
BUNX_LOGS_DIR, BUNX_LOGS_DIR,
BUNDLER_CTX_MAP_JSON,
SSR_BUNDLER_CTX_MAP_JSON,
}; };
} }