78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
import { build } from "esbuild";
|
|
import { readFile, writeFile, mkdir, cp, rm } from "node:fs/promises";
|
|
await writeFile(
|
|
"engine/script-host.ts",
|
|
"export const workerSource=" +
|
|
JSON.stringify(await readFile("engine/script-worker.js", "utf8")) +
|
|
";\n",
|
|
);
|
|
await mkdir("public/engine", { recursive: true });
|
|
await build({
|
|
entryPoints: ["engine/player-entry.ts"],
|
|
bundle: true,
|
|
format: "esm",
|
|
target: "es2022",
|
|
minify: true,
|
|
outfile: "public/engine/player.js",
|
|
logLevel: "warning",
|
|
});
|
|
await mkdir("public/studio", { recursive: true });
|
|
await build({
|
|
entryPoints: ["editor/local.tsx"],
|
|
bundle: true,
|
|
format: "esm",
|
|
target: "es2022",
|
|
minify: true,
|
|
outfile: "public/studio/editor.js",
|
|
define: { "process.env.NODE_ENV": '"production"' },
|
|
logLevel: "warning",
|
|
});
|
|
await mkdir("public/hosted-editor", { recursive: true });
|
|
await build({
|
|
entryPoints: ["editor/hosted.tsx"],
|
|
bundle: true,
|
|
format: "esm",
|
|
target: "es2022",
|
|
minify: true,
|
|
outfile: "public/hosted-editor/editor.js",
|
|
define: { "process.env.NODE_ENV": '"production"' },
|
|
logLevel: "warning",
|
|
});
|
|
await writeFile(
|
|
"public/studio/index.html",
|
|
'<!doctype html><html lang="ru"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><title>Forma Engine</title><link rel="icon" href="/favicon.svg"><link rel="stylesheet" href="/studio/editor.css"></head><body><div id="root"></div><script type="module" src="/studio/editor.js"></script></body></html>',
|
|
);
|
|
console.log("Editor and standalone player built.");
|
|
|
|
const nativeFiles = [
|
|
"package.json",
|
|
"package-lock.json",
|
|
"build.mjs",
|
|
"cleanup.cjs",
|
|
"options.mjs",
|
|
"setup-android.mjs",
|
|
"desktop/main.cjs",
|
|
"desktop/protocol.cjs",
|
|
"desktop/icon.png",
|
|
"desktop/icon.ico",
|
|
"android/settings.gradle",
|
|
"android/build.gradle",
|
|
"android/gradle.properties",
|
|
"android/app/build.gradle",
|
|
"android/app/src/main/AndroidManifest.xml",
|
|
"android/app/src/main/res/drawable/forma_icon.xml",
|
|
"android/app/src/main/java/com/forma/shell/MainActivity.java",
|
|
];
|
|
await rm("public/build-targets", { recursive: true, force: true });
|
|
for (const file of nativeFiles) {
|
|
await mkdir(
|
|
"public/build-targets/" + file.split("/").slice(0, -1).join("/"),
|
|
{ recursive: true },
|
|
);
|
|
await cp("native/" + file, "public/build-targets/" + file);
|
|
}
|
|
await writeFile(
|
|
"public/build-targets/manifest.json",
|
|
JSON.stringify(nativeFiles),
|
|
);
|