fix build site

This commit is contained in:
Rizky 2023-11-08 22:12:36 +00:00
parent f0748f4954
commit fc3d972535
4 changed files with 58 additions and 57 deletions

View File

@ -65,7 +65,7 @@ export const Live: FC<{
routeLive(p, pathname); routeLive(p, pathname);
} }
if (!p.mode) return <Loading note="init mode" />; if (!p.mode) return <Loading />;
else { else {
w.isMobile = p.mode === "mobile"; w.isMobile = p.mode === "mobile";
w.isDesktop = p.mode === "desktop"; w.isDesktop = p.mode === "desktop";

View File

@ -6,6 +6,7 @@
"dev": "bun run --hot --silent ./pkgs/core/index.ts dev", "dev": "bun run --hot --silent ./pkgs/core/index.ts dev",
"clean": "rm -rf data && rm -rf app/static && rm -rf app/web/.parcel-cache", "clean": "rm -rf data && rm -rf app/static && rm -rf app/web/.parcel-cache",
"build": "bun run --silent ./pkgs/core/build.ts", "build": "bun run --silent ./pkgs/core/build.ts",
"build-site": "bun run --silent ./pkgs/core/build-site.ts",
"db-pull": "bun run ./pkgs/core/db-pull.ts", "db-pull": "bun run ./pkgs/core/db-pull.ts",
"parcel": "bun clean && bun run ./pkgs/core/parcel.ts", "parcel": "bun clean && bun run ./pkgs/core/parcel.ts",
"prod": "bun run --silent ./pkgs/core/index.ts", "prod": "bun run --silent ./pkgs/core/index.ts",

53
pkgs/core/build-site.ts Normal file
View File

@ -0,0 +1,53 @@
import { dir } from "dir";
import { Plugin, context } from "esbuild";
import { $ } from "execa";
import { removeAsync, writeAsync } from "fs-jetpack";
await removeAsync(dir.path("app/srv/site"));
const onEndPlugin: Plugin = {
name: "on-end",
setup(build) {
build.onEnd(async (result) => {
console.log("Compressing deploy");
await removeAsync(dir.path("app/srv/site.zip"));
await $({ cwd: dir.path("app/srv") })`zip -r site.zip site`;
process.exit(0);
});
},
};
console.log("Building deploy");
const ctx = await context({
bundle: true,
absWorkingDir: dir.path(""),
entryPoints: [dir.path("app/web/src/render/site/site.tsx")],
outdir: dir.path("app/srv/site"),
splitting: true,
format: "esm",
jsx: "transform",
minify: true,
sourcemap: true,
logLevel: "error",
plugins: [onEndPlugin],
define: {
"process.env.NODE_ENV": `"production"`,
},
});
await ctx.rebuild();
await writeAsync(
dir.path("app/srv/site/index.html"),
`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<link rel="stylesheet" href="https://prasi.app/index.css">
</head>
<body class="flex-col flex-1 w-full min-h-screen flex opacity-0">
<div id="root"></div>
<script src="/site.js" type="module"></script>
</body>
</html>`
);

View File

@ -1,17 +1,14 @@
import brotliPromise from "brotli-wasm"; import brotliPromise from "brotli-wasm";
import { spawn } from "bun"; import { spawn } from "bun";
import { dir } from "dir"; import { dir } from "dir";
import { Plugin, context } from "esbuild";
import { $ } from "execa";
import { fdir } from "fdir"; import { fdir } from "fdir";
import { statSync } from "fs"; import { statSync } from "fs";
import { import {
copyAsync,
existsAsync,
listAsync, listAsync,
removeAsync, removeAsync,
writeAsync, writeAsync,
inspectTree,
existsAsync,
copyAsync,
} from "fs-jetpack"; } from "fs-jetpack";
const brotli = await brotliPromise; const brotli = await brotliPromise;
@ -101,54 +98,4 @@ if (files) {
} }
} }
const buildSite = async () => { await import("./build-site");
await removeAsync(dir.path("app/srv/site"));
const onEndPlugin: Plugin = {
name: "on-end",
setup(build) {
build.onEnd(async (result) => {
console.log("Compressing deploy");
await removeAsync(dir.path("app/srv/site.zip"));
await $({ cwd: dir.path("app/srv") })`zip -r site.zip site`;
process.exit(0);
});
},
};
console.log("Building deploy");
const ctx = await context({
bundle: true,
absWorkingDir: dir.path(""),
entryPoints: [dir.path("app/web/src/render/site/site.tsx")],
outdir: dir.path("app/srv/site"),
splitting: true,
format: "esm",
jsx: "transform",
minify: true,
sourcemap: true,
logLevel: "error",
plugins: [onEndPlugin],
define: {
"process.env.NODE_ENV": `"production"`,
},
});
await ctx.rebuild();
await writeAsync(
dir.path("app/srv/site/index.html"),
`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<link rel="stylesheet" href="https://prasi.app/index.css">
</head>
<body class="flex-col flex-1 w-full min-h-screen flex opacity-0">
<div id="root"></div>
<script src="/site.js" type="module"></script>
</body>
</html>`
);
};
await buildSite();