From 93859883c12cbc39e0142840b633fc288e9ecc75 Mon Sep 17 00:00:00 2001 From: Ven Date: Sat, 29 Oct 2022 20:27:48 +0200 Subject: build: inject createElement alias (#176) --- scripts/build/common.mjs | 10 +++++++--- scripts/build/inject/react.mjs | 21 +++++++++++++++++++++ scripts/build/tsconfig.esbuild.json | 7 +++++++ 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 scripts/build/inject/react.mjs create mode 100644 scripts/build/tsconfig.esbuild.json (limited to 'scripts/build') diff --git a/scripts/build/common.mjs b/scripts/build/common.mjs index db87134..33763b2 100644 --- a/scripts/build/common.mjs +++ b/scripts/build/common.mjs @@ -17,7 +17,6 @@ */ import { exec, execSync } from "child_process"; -import esbuild from "esbuild"; import { existsSync } from "fs"; import { readdir, readFile } from "fs/promises"; import { join } from "path"; @@ -142,7 +141,7 @@ export const fileIncludePlugin = { }; /** - * @type {esbuild.BuildOptions} + * @type {import("esbuild").BuildOptions} */ export const commonOpts = { logLevel: "info", @@ -152,5 +151,10 @@ export const commonOpts = { sourcemap: watch ? "inline" : "", legalComments: "linked", plugins: [fileIncludePlugin, gitHashPlugin, gitRemotePlugin], - external: ["~plugins", "~git-hash", "~git-remote"] + external: ["~plugins", "~git-hash", "~git-remote"], + inject: ["./scripts/build/inject/react.mjs"], + jsxFactory: "VencordCreateElement", + jsxFragment: "VencordFragment", + // Work around https://github.com/evanw/esbuild/issues/2460 + tsconfig: "./scripts/build/tsconfig.esbuild.json" }; diff --git a/scripts/build/inject/react.mjs b/scripts/build/inject/react.mjs new file mode 100644 index 0000000..1343b5f --- /dev/null +++ b/scripts/build/inject/react.mjs @@ -0,0 +1,21 @@ +/* + * 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 . +*/ + +export const VencordFragment = Symbol.for("react.fragment"); +export let VencordCreateElement = + (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args); diff --git a/scripts/build/tsconfig.esbuild.json b/scripts/build/tsconfig.esbuild.json new file mode 100644 index 0000000..e3e28a1 --- /dev/null +++ b/scripts/build/tsconfig.esbuild.json @@ -0,0 +1,7 @@ +// Work around https://github.com/evanw/esbuild/issues/2460 +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react" + } +} -- cgit