diff options
Diffstat (limited to 'scripts/build')
-rwxr-xr-x | scripts/build/build.mjs | 9 | ||||
-rwxr-xr-x | scripts/build/buildWeb.mjs | 5 | ||||
-rw-r--r-- | scripts/build/common.mjs | 51 |
3 files changed, 46 insertions, 19 deletions
diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index f6304b1..1986369 100755 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -18,7 +18,7 @@ */ import esbuild from "esbuild"; -import { commonOpts, gitHashPlugin, globPlugins, makeAllPackagesExternalPlugin } from "./common.mjs"; +import { commonOpts, fileIncludePlugin, gitHashPlugin, globPlugins, makeAllPackagesExternalPlugin } from "./common.mjs"; /** * @type {esbuild.BuildOptions} @@ -30,7 +30,7 @@ const nodeCommonOpts = { target: ["esnext"], minify: true, sourcemap: "linked", - plugins: [makeAllPackagesExternalPlugin], + plugins: [...commonOpts.plugins, makeAllPackagesExternalPlugin], }; await Promise.all([ @@ -55,7 +55,8 @@ await Promise.all([ external: ["plugins", "git-hash"], plugins: [ globPlugins, - gitHashPlugin + gitHashPlugin, + fileIncludePlugin ], define: { IS_WEB: "false" @@ -65,6 +66,6 @@ await Promise.all([ console.error("Build failed"); console.error(err.message); // make ci fail - if (!watch) + if (!commonOpts.watch) process.exitCode = 1; }); diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs index 8abac2c..286aad3 100755 --- a/scripts/build/buildWeb.mjs +++ b/scripts/build/buildWeb.mjs @@ -23,7 +23,7 @@ import yazl from "yazl"; import esbuild from "esbuild"; // wtf is this assert syntax import PackageJSON from "../../package.json" assert { type: "json" }; -import { commonOpts, gitHashPlugin, globPlugins } from "./common.mjs"; +import { commonOpts, fileIncludePlugin, gitHashPlugin, globPlugins } from "./common.mjs"; /** * @type {esbuild.BuildOptions} @@ -36,7 +36,8 @@ const commonOptions = { external: ["plugins", "git-hash"], plugins: [ globPlugins, - gitHashPlugin + gitHashPlugin, + fileIncludePlugin ], target: ["esnext"], define: { diff --git a/scripts/build/common.mjs b/scripts/build/common.mjs index 6143fb2..c3afc7f 100644 --- a/scripts/build/common.mjs +++ b/scripts/build/common.mjs @@ -19,22 +19,11 @@ import { execSync } from "child_process"; import esbuild from "esbuild"; import { existsSync } from "fs"; -import { readdir } from "fs/promises"; +import { readdir, readFile } from "fs/promises"; +import { join } from "path"; const watch = process.argv.includes("--watch"); -/** - * @type {esbuild.BuildOptions} - */ -export const commonOpts = { - logLevel: "info", - bundle: true, - watch, - minify: !watch, - sourcemap: watch ? "inline" : "", - legalComments: "linked" -}; - // https://github.com/evanw/esbuild/issues/619#issuecomment-751995294 /** * @type {esbuild.Plugin} @@ -103,3 +92,39 @@ export const gitHashPlugin = { })); } }; + +/** + * @type {esbuild.Plugin} + */ +export const fileIncludePlugin = { + name: "file-include-plugin", + setup: build => { + const filter = /^@fileContent\/.+$/; + build.onResolve({ filter }, args => ({ + namespace: "include-file", + path: args.path, + pluginData: { + path: join(args.resolveDir, args.path.slice("include-file/".length)) + } + })); + build.onLoad({ filter, namespace: "include-file" }, async ({ pluginData: { path } }) => { + const [name, format] = path.split(";"); + return { + contents: `export default ${JSON.stringify(await readFile(name, format ?? "utf-8"))}` + }; + }); + } +}; + +/** + * @type {esbuild.BuildOptions} + */ +export const commonOpts = { + logLevel: "info", + bundle: true, + watch, + minify: !watch, + sourcemap: watch ? "inline" : "", + legalComments: "linked", + plugins: [fileIncludePlugin] +}; |