Page MenuHomeSealhub

esbuild.cjs
No OneTemporary

esbuild.cjs

const { build } = require("esbuild");
const glob = require("tiny-glob");
const { promises: fs } = require("node:fs");
const { extname, resolve, relative } = require("node:path");
const watch = process.argv.at(-1) === "--watch";
// plugin that rewrites the import paths so in typescript we can use
//
// import smth from src/index.ts
//
// instead of providing relative paths
const handle_absolute_paths = (project_dir) => ({
name: "sealgen-rewrite-asset-imports",
setup(build) {
build.onLoad({ filter: /\.tsx?$/ }, async (args) => {
let contents = await fs.readFile(args.path, "utf8");
const regex_import = new RegExp(
`^import ([^ ]+, )?(\\w+|{[^}]+}) from "([^"]+)";`,
"gm"
);
contents = contents.replaceAll(regex_import, (line) => {
const replaced = line.replace(
`"src/`,
`"` +
relative(args.path, resolve(project_dir, "./lib/src")) +
"/"
);
return replaced;
});
return {
contents,
loader: extname(args.path) === ".tsx" ? "tsx" : "ts",
};
});
},
});
(async () => {
let entryPoints = Object.fromEntries(
(await glob("./src/**/*.ts")).map((e) => [e.replace(/\.ts$/, ""), e])
);
build({
entryPoints,
sourcemap: true,
outdir: "./lib",
logLevel: "info",
platform: "node",
watch,
target: "node16",
format: "esm",
plugins: [handle_absolute_paths(__dirname)],
});
})();

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 2, 15:29 (18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1016056
Default Alt Text
esbuild.cjs (1 KB)

Event Timeline