fix build site
This commit is contained in:
parent
f0748f4954
commit
fc3d972535
|
|
@ -65,7 +65,7 @@ export const Live: FC<{
|
|||
routeLive(p, pathname);
|
||||
}
|
||||
|
||||
if (!p.mode) return <Loading note="init mode" />;
|
||||
if (!p.mode) return <Loading />;
|
||||
else {
|
||||
w.isMobile = p.mode === "mobile";
|
||||
w.isDesktop = p.mode === "desktop";
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
"dev": "bun run --hot --silent ./pkgs/core/index.ts dev",
|
||||
"clean": "rm -rf data && rm -rf app/static && rm -rf app/web/.parcel-cache",
|
||||
"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",
|
||||
"parcel": "bun clean && bun run ./pkgs/core/parcel.ts",
|
||||
"prod": "bun run --silent ./pkgs/core/index.ts",
|
||||
|
|
|
|||
|
|
@ -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>`
|
||||
);
|
||||
|
|
@ -1,17 +1,14 @@
|
|||
import brotliPromise from "brotli-wasm";
|
||||
import { spawn } from "bun";
|
||||
import { dir } from "dir";
|
||||
import { Plugin, context } from "esbuild";
|
||||
import { $ } from "execa";
|
||||
import { fdir } from "fdir";
|
||||
import { statSync } from "fs";
|
||||
import {
|
||||
copyAsync,
|
||||
existsAsync,
|
||||
listAsync,
|
||||
removeAsync,
|
||||
writeAsync,
|
||||
inspectTree,
|
||||
existsAsync,
|
||||
copyAsync,
|
||||
} from "fs-jetpack";
|
||||
const brotli = await brotliPromise;
|
||||
|
||||
|
|
@ -101,54 +98,4 @@ if (files) {
|
|||
}
|
||||
}
|
||||
|
||||
const buildSite = async () => {
|
||||
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();
|
||||
await import("./build-site");
|
||||
|
|
|
|||
Loading…
Reference in New Issue