Page MenuHomeSealhub

rewrite-asset-imports.ts
No OneTemporary

rewrite-asset-imports.ts

import { promises as fs } from "fs";
import { extname, resolve } from "node:path";
import { embeddable_file_extensions } from "../embeddable-file-extensions.js";
import { removeNamedImports } from "../../remove-named-imports.js";
import { PluginBuild } from "esbuild";
export const rewrite_asset_imports_plugin = (project_dir: string) => ({
name: "sealgen-rewrite-asset-imports",
setup(build: PluginBuild) {
build.onLoad({ filter: /\.tsx?$/ }, async (args) => {
let contents = await fs.readFile(args.path, "utf8");
for (const ext of embeddable_file_extensions) {
const regex_assets = new RegExp(
`^import (\\w+|{[^}]+}) from "([^"]+.${ext})";`,
"gm"
);
contents = contents.replaceAll(regex_assets, (line) => {
line = line.replace(`.${ext}"`, '.js"');
return line;
});
}
const regex_import = new RegExp(
`^import ([^ ]+, )?(\\w+|{[^}]+}) from "([^"]+)";`,
"gm"
);
contents = contents.replaceAll(
regex_import,
(line, _: string, original_path: string) => {
const replaced = line.replace(
`"src/`,
`"` + resolve(project_dir, "./dist") + "/"
);
return replaced;
}
);
contents = removeNamedImports(contents) as string;
return {
contents,
loader: extname(args.path) === ".tsx" ? "tsx" : "ts",
};
});
},
});

File Metadata

Mime Type
text/x-java
Expires
Tue, May 27, 23:47 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
628531
Default Alt Text
rewrite-asset-imports.ts (1 KB)

Event Timeline