解决问题:
下载的某个包有问题,只需要改少量的代码就可以正常运行
比如要兼容浏览器,把 Buffer 改成 Uint8Array 之类的。
又比如,库里的逗号多了一个,导致报错,库的作者发布要到几天之后,我要直接改库使用
==================
这几天我遇到这样一个问题,开发的包是非严格模式写的, 我用vite 打包的时候,他会报错说我的语法有问题。
究其原因是,Vite 无法处理、也不支持仅可在非严格模式(sloppy mode)下运行的代码。这是因为 Vite 使用了 ESM 并且始终在 ESM 中使用 严格模式。
所以出现了我必须要改一下库里的某些代码的语法才能继续 build 成功,但是因为我们是多人协作,每次发布的时候,大家都要去库里改一下代码,哇塞,真是麻烦到爆炸以至于要提个 issue 给库的作者,但是发现该库已经发布好几年了,算是一个成熟稳定的库,根本没有人因为这个原因再去改这里的代码了。
所以呢,我就找解决方法。发现了 patch-package 这个包。
它的解释是这样的:patch-package
lets app authors instantly make and keep fixes to npm dependencies. It's a vital band-aid for those of us living on the bleeding edge.
而 yarn v2 自带 patch,真是爽歪歪,查看文档,用法如下(如果不是yarn,请查看https://github.com/ds300/patch-package 找解决方法)
如果想用 yarn v2 版本的,切换
yarn set version stable
然后执行
yarn patch <package>
// 出现 You can now edit the following folder: /xx/xx/xx
// 点击文件目录,打开项目,并修改你要修改的地方
// 然后执行 yarn patch-commit -s /xx/xx/xx(命令行应该有,直接复制)
// 复制执行,这段命令是让你把库关联到某个临时目录
之后 package.json 里就会有一个关联的 resolutions
这里路径里的文件,告诉下载了某个包之后该如何补丁,需要上传到 git 仓库,这样大家就不需要每次都改那个库里