esbuild 不包括 HTML 调用的 JS 函数

esbuild Not Including JS Functions Called by HTML

我在main-entry JS文件中有几个JS函数,用户交互后只有HTML菜单调用,显然esbuild认为它们没有被使用,像这样:

HTML:

<a id="ndb" onmouseenter="keeptopbar()" onmouseleave="reltopbar()" onclick="askuser('newform')">FORM</a>

script.js:

function askuser(inpv) { 
    var st = "";
    if (inpv === 'newform'){

编辑:我尝试在这些函数上添加“导出”,但没有成功。

是否有一个选项可以包含在 package.json 中以使 esbuild 包含在主入口 JS 文件中找到的所有函数,或者任何其他技巧?

您可以尝试让 ESBuild 相信这些函数将在您的 JS 中使用。这可能有效:

if (Math.random() < 0) console.log(askuser);

您可以将函数创建为全局对象的属性:

window.keeptopbar = function(){
    //...
};

window.reltopbar = function(){
    //...
};

window.askuser = function(inpv){
    //...
};

这样一来,esbuild 的 tree shaking 就不会删除它们,而且您还要确保函数是全局的。