aboutsummaryrefslogtreecommitdiff
path: root/scripts/build/common.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build/common.mjs')
-rw-r--r--scripts/build/common.mjs51
1 files changed, 38 insertions, 13 deletions
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]
+};