Files
wehub-resource-sync 311a3666c4
Build documentation / build (push) Failing after 0s
Unit tests / build (18) (push) Has been cancelled
Unit tests / build (20) (push) Has been cancelled
Unit tests / build (22) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:44:39 +08:00

50 lines
1.5 KiB
JavaScript

/**
* Plugin to ignore/exclude certain modules by returning an empty module.
* Equivalent to webpack's resolve.alias with false value.
*/
export const ignoreModulesPlugin = (modules = []) => ({
name: "ignore-modules",
setup(build) {
// Escape special regex characters in module names
const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const escapedModules = modules.map(escapeRegex);
// Match both "module" and "node:module" patterns
const patterns = escapedModules.flatMap((mod) => [mod, `node:${mod}`]);
const filter = new RegExp(`^(${patterns.join("|")})$`);
build.onResolve({ filter }, (args) => {
return { path: args.path, namespace: "ignore-modules" };
});
build.onLoad({ filter: /.*/, namespace: "ignore-modules" }, (args) => {
switch (args.path) {
case "node:stream":
return {
contents: `
const noop = () => {};
export default {};
export const Readable = { fromWeb: noop };
`,
};
case "node:stream/promises":
return {
contents: `
const noop = () => {};
export default {};
export const pipeline = noop;
`,
};
case "node:fs":
case "node:path":
case "node:url":
case "sharp":
case "onnxruntime-node":
default:
return {
contents: `export default {};`,
};
}
});
},
});