266 - 《依赖预打包》
发布于 2023年2月23日
我本以为大家都知道这是啥了,看到有人提,就写一篇。但是写完发现他把问题删了,😄。
1、依赖预打包是啥?就是把依赖提前打包好放在你的 npm 包里,然后在 package.json 中删除响应的依赖,然后使用的时候直接引打包后的文件即可。
比如你的 npm 包依赖了 a,而 a 又依赖了 b,那正常结构应该是这样。
node_modules
a
node_modules
b
index.ts
package.json
经过依赖预打包,会变成这样。
compiled
a.js
index.ts
package.json
2、带来什么好处?1)锁定依赖,对于用户和用户的项目来说会更安全,不会出现三方库升级导致的意外情况发现,我们可以把我更新的主动权,可以定期(Umi 是 4 周 1 次)走完测试流程后再更新,见 28 - 《依赖版本锁不锁》,2)速度更快,因为少了很多 resolve 的机制和文件 IO,理论上会更快,3)让 peerDependences 警告消失,4)复用一个库的多个版本,因为你不能直接在 package.json 中声明相同库的不同版本,比如要同时支持 webpack 4 和 webpack 5,5)忘了,感觉还有的。
3、有什么缺点?1