windingwind / zotero-plugin-toolkit

Toolkit for Zotero Plugin Developers.
https://www.npmjs.com/package/zotero-plugin-toolkit
MIT License
115 stars 13 forks source link

tree shaking - @v4 #65

Closed volatile-static closed 1 month ago

volatile-static commented 1 month ago

升级到4.0.0(#63 )之后,似乎不能完美实现按需导入image 比如上图中可以看到ProgressWindowHelper在整个仓库中只出现了一次,而且会提示“未使用的变量名”,不理解是怎么被bundle进来的。 本来只是个小问题,但巧的是它直接继承了Zotero.ProgressWindow类,导致任何不在插件环境下的代码都会在load时报错。 同时,后来补充的wait( dad043e1ff1ae7def91d919e8957ac6d353d34dd )也会在只使用一个函数的情况下打包整个文件: image @northword

northword commented 1 month ago

wait 是因为导出用了别名的问题,index.ts 里应该写为 export * form "./utils/wait.js" 的,或者就是按路径导出,在 package.json 里写为

{
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./wait": {
      "types": "./dist/utils/wait.d.ts",
      "import": "./dist/utils/wait.js"
    }
  },
}

这属于 esbuild 的问题,如果用 rollup 这种打包器,应该是可以的:https://github.com/evanw/esbuild/issues/1420 。这个当时在群里提到过,你说这个文件不大没影响,我就没去改。


前一个 progressWindow 的问题,我调查一下。

volatile-static commented 1 month ago

没关系,我提到wait的问题只是想方便你排查progressWindow的问题

northword commented 1 month ago

EDIT:看错了

volatile-static commented 1 month ago

不是吧,hint函数里用到的不是toolkit继承后的progresswindow

northword commented 1 month ago

progressWindowHelper 的问题会不会和这个类似?

https://github.com/evanw/esbuild/issues/1912: gets included because of non existent class in extends

volatile-static commented 1 month ago

是的,我把extends去掉之后就shake掉了,可以认为对esbuild来说这是个无解的问题。因为 #66 缓解了progresswindow问题,这个可以先关掉,之后有希望再考虑