89 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/node
 | 
						|
/*
 | 
						|
 * Vencord, a modification for Discord's desktop app
 | 
						|
 * Copyright (c) 2022 Vendicated and contributors
 | 
						|
 *
 | 
						|
 * This program is free software: you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU General Public License as published by
 | 
						|
 * the Free Software Foundation, either version 3 of the License, or
 | 
						|
 * (at your option) any later version.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License
 | 
						|
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
						|
*/
 | 
						|
 | 
						|
import esbuild from "esbuild";
 | 
						|
 | 
						|
import { commonOpts, globPlugins, isStandalone, watch } from "./common.mjs";
 | 
						|
 | 
						|
const defines = {
 | 
						|
    IS_STANDALONE: isStandalone,
 | 
						|
    IS_DEV: JSON.stringify(watch)
 | 
						|
};
 | 
						|
if (defines.IS_STANDALONE === "false")
 | 
						|
    // If this is a local build (not standalone), optimise
 | 
						|
    // for the specific platform we're on
 | 
						|
    defines["process.platform"] = JSON.stringify(process.platform);
 | 
						|
 | 
						|
/**
 | 
						|
 * @type {esbuild.BuildOptions}
 | 
						|
 */
 | 
						|
const nodeCommonOpts = {
 | 
						|
    ...commonOpts,
 | 
						|
    format: "cjs",
 | 
						|
    platform: "node",
 | 
						|
    target: ["esnext"],
 | 
						|
    minify: true,
 | 
						|
    bundle: true,
 | 
						|
    external: ["electron", ...commonOpts.external],
 | 
						|
    define: defines,
 | 
						|
};
 | 
						|
 | 
						|
const sourceMapFooter = s => watch ? "" : `//# sourceMappingURL=vencord://${s}.js.map`;
 | 
						|
const sourcemap = watch ? "inline" : "external";
 | 
						|
 | 
						|
await Promise.all([
 | 
						|
    esbuild.build({
 | 
						|
        ...nodeCommonOpts,
 | 
						|
        entryPoints: ["src/preload.ts"],
 | 
						|
        outfile: "dist/preload.js",
 | 
						|
        footer: { js: "//# sourceURL=VencordPreload\n" + sourceMapFooter("preload") },
 | 
						|
        sourcemap,
 | 
						|
    }),
 | 
						|
    esbuild.build({
 | 
						|
        ...nodeCommonOpts,
 | 
						|
        entryPoints: ["src/patcher.ts"],
 | 
						|
        outfile: "dist/patcher.js",
 | 
						|
        footer: { js: "//# sourceURL=VencordPatcher\n" + sourceMapFooter("patcher") },
 | 
						|
        sourcemap,
 | 
						|
    }),
 | 
						|
    esbuild.build({
 | 
						|
        ...commonOpts,
 | 
						|
        entryPoints: ["src/Vencord.ts"],
 | 
						|
        outfile: "dist/renderer.js",
 | 
						|
        format: "iife",
 | 
						|
        target: ["esnext"],
 | 
						|
        footer: { js: "//# sourceURL=VencordRenderer\n" + sourceMapFooter("renderer") },
 | 
						|
        globalName: "Vencord",
 | 
						|
        sourcemap,
 | 
						|
        plugins: [
 | 
						|
            globPlugins,
 | 
						|
            ...commonOpts.plugins
 | 
						|
        ],
 | 
						|
        define: {
 | 
						|
            ...defines,
 | 
						|
            IS_WEB: false
 | 
						|
        }
 | 
						|
    }),
 | 
						|
]).catch(err => {
 | 
						|
    console.error("Build failed");
 | 
						|
    console.error(err.message);
 | 
						|
    // make ci fail
 | 
						|
    if (!commonOpts.watch)
 | 
						|
        process.exitCode = 1;
 | 
						|
});
 |