`OnLoad` in custom plugin is called for disabled modules
OnLoad in custom plugin is called for disabled modules, this causes the module not to no longer be "empty".
Reproduction entry.js
import url from 'url';
console.log("urlTest", url);
package.json
{
"name": "test",
"version": "0.0.0",
"browser": {
"url": false
},
"dependencies": {
"url": "0.11.3"
}
}
require("esbuild").build({
bundle: true,
outdir: "dist",
entryPoints: ["./entry.js"],
plugins: [
{
name: "plugin",
setup(build) {
build.onLoad({ filter: /\.[cm]?[jt]sx?$/ }, (args) => {
return {
contents: `console.log('foo')`,
loader: "js",
};
});
},
},
],
});
Actual
"use strict";
(() => {
// entry.js
console.log("foo");
})();
Expected
If a module is disabled, the OnLoad won't be triggered. Another option is to include a context indicator in the onLoad arguments, signaling that the module is disabled. This way, the custom loader can decide whether or not to return data.
"use strict";
(() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
// (disabled):node_modules/url/url.js
var require_url = __commonJS({
"(disabled):node_modules/url/url.js"() {
}
});
// entry.js
var import_url = __toESM(require_url());
console.log("urlTest", import_url.default);
})();
Esbuild version: 0.20.0
What is the status of this ticket?
This is causing problems with the new angular17+ esbuild system and various packages
- Does anyone have a workaround for this problem? EDIT -> seems fixed with within
"@microsoft/signalr": "8.0.7"for me. - Whats the status of this ticket?
facing same issue with @microsoft/signalr": "8.0.0 in angular build
+1