aerocord v4.0.1
Admin 2024-12-20 09:43:40 -08:00
parent 09bb6632f2
commit ffb7047021
1 changed files with 65 additions and 40 deletions

View File

@ -6,14 +6,17 @@
* Copyright (c) 2023 Vendicated and Vencord contributors * Copyright (c) 2023 Vendicated and Vencord contributors
*/ */
import { BuildOptions, build } from "esbuild"; import { BuildContext, BuildOptions, context } from "esbuild";
import { copyFile } from "fs/promises";
import vencordDep from "./vencordDep.mjs";
const isDev = process.argv.includes("--dev"); const isDev = process.argv.includes("--dev");
const CommonOpts: BuildOptions = { const CommonOpts: BuildOptions = {
minify: true, minify: !isDev,
bundle: true, bundle: true,
sourcemap: "inline", sourcemap: "linked",
logLevel: "info" logLevel: "info"
}; };
@ -28,27 +31,41 @@ const NodeCommonOpts: BuildOptions = {
} }
}; };
async function buildUnpacked() { const contexts = [] as BuildContext[];
async function createContext(options: BuildOptions) {
contexts.push(await context(options));
}
async function copyVenmic() {
if (process.platform !== "linux") return;
return Promise.all([
copyFile(
"./node_modules/@vencord/venmic/prebuilds/venmic-addon-linux-x64/node-napi-v7.node",
"./static/dist/venmic-x64.node"
),
copyFile(
"./node_modules/@vencord/venmic/prebuilds/venmic-addon-linux-arm64/node-napi-v7.node",
"./static/dist/venmic-arm64.node"
)
]).catch(() => console.warn("Failed to copy venmic. Building without venmic support"));
}
await Promise.all([ await Promise.all([
build({ copyVenmic(),
createContext({
...NodeCommonOpts, ...NodeCommonOpts,
entryPoints: ["src/main/index.ts"], entryPoints: ["src/main/index.ts"],
outfile: "dist/js/main.js", outfile: "dist/js/main.js",
footer: { js: "//# sourceURL=VCDMain" } footer: { js: "//# sourceURL=VCDMain" }
}), }),
build({ createContext({
...NodeCommonOpts, ...NodeCommonOpts,
entryPoints: ["src/preload/index.ts"], entryPoints: ["src/preload/index.ts"],
outfile: "dist/js/preload.js", outfile: "dist/js/preload.js",
footer: { js: "//# sourceURL=VCDPreload" } footer: { js: "//# sourceURL=VCDPreload" }
}), }),
build({ createContext({
...NodeCommonOpts,
entryPoints: ["src/updater/preload.ts"],
outfile: "dist/js/updaterPreload.js",
footer: { js: "//# sourceURL=VCDUpdaterPreload" }
}),
build({
...CommonOpts, ...CommonOpts,
globalName: "Vesktop", globalName: "Vesktop",
entryPoints: ["src/renderer/index.ts"], entryPoints: ["src/renderer/index.ts"],
@ -58,12 +75,20 @@ async function buildUnpacked() {
jsxFactory: "VencordCreateElement", jsxFactory: "VencordCreateElement",
jsxFragment: "VencordFragment", jsxFragment: "VencordFragment",
external: ["@vencord/types/*"], external: ["@vencord/types/*"],
plugins: [vencordDep],
footer: { js: "//# sourceURL=VCDRenderer" } footer: { js: "//# sourceURL=VCDRenderer" }
}) })
]); ]);
}
buildUnpacked().catch(err => { const watch = process.argv.includes("--watch");
console.error("Build failed:", err);
process.exit(1); if (watch) {
}); await Promise.all(contexts.map(ctx => ctx.watch()));
} else {
await Promise.all(
contexts.map(async ctx => {
await ctx.rebuild();
await ctx.dispose();
})
);
}