0

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

HTML:

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

脚本.js:

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

编辑:我试图在这些功能上添加“导出”,但没有奏效。

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

4

2 回答 2

1

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

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

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

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

这样,esbuild 的 tree shaking 不会删除它们,并且您还可以确保函数是全局的。

于 2021-07-15T18:28:24.737 回答
0

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

if (Math.random() < 0) console.log(askuser);
于 2021-07-15T18:03:33.143 回答