qiniu / builder

Apache License 2.0
34 stars 33 forks source link

Compress the published package `fec-builder` #159

Open nighca opened 2 years ago

nighca commented 2 years ago

With tools like vercel/ncc

nighca commented 2 years ago

简单尝试了下,目前主要的障碍在:

  1. 依赖 __dirname / __filename 的代码(如读取 preset config 的逻辑)会行为不正确(代码被 bundle 了)

    可以考虑通过获取 package (builder) root,然后往 package root 后边拼路径的方式来定位目标资源(如 preset config)

    获取 package root 可以通过从当前文件路径向上找,直到找到最近的、包含 package.json 文件的路径来实现;不过需要注意,ncc 构建出的 dist/ 目录中也是有 package.json 文件的,因此这个做法会有问题

  2. 依赖 require.resolve 获取某个依赖(如 webpack loader 或 babel preset)的绝对路径的逻辑会不正确(依赖被 bundle 了)

    考虑把这些依赖加到 ncc externals 里(跟着 builder 一起被安装);或者放到特定的目录里,通过拼接该特定目录来代替 require.resolve 逻辑

  3. 依赖中存在类似 1 / 2 的逻辑