有一个叫 jspdf 的库,其 package.json 里面是这样描述的:
"dependencies": { "canvg": "1.5.3", "file-saver": "github:eligrey/FileSaver.js#1.3.8", "html2canvas": "1.0.0-alpha.12", "omggif": "1.0.7", "promise-polyfill": "8.1.0", "stackblur-canvas": "2.2.0" }
问题就出在这个 file-saver.由于是从 github 拉取的,导致每次打包时 install 变得极慢,且不小的概率失败.
网上常用的 npm --registry https://registry.npmmirror.com 是无效的,并不能改变这种指定 git 源的下载.
有想过使用 file 协议 url 来替换.
"dependencies": { "file-saver": "file:./file-saver" }
但是这个库并不是项目 package.json 的直接依赖,而是 jspdf 导致的间接依赖,似乎也无法奏效.
大佬们有没有什么好方法?这种依赖为 github 源且非直接依赖的,能否指定其使用别的方式下载?
![]() | 1 leisure 2022-10-08 15:24:45 +08:00 额,终端中设置 proxy ? 我用 zsh ,现在习惯设置代理后体验还不错 |
![]() | 2 HugoChao 2022-10-08 15:25:38 +08:00 1.手动下载丢目录里 2.手机热点+代理下载,大部分情况下速度很快,测试环境:南京联通 4G |
![]() | 4 xubingok OP 十分钟过了没法编辑了.... 因为打包服务器网络条件比较简陋,不考虑代理哈不考虑代理~~~ |
![]() | 5 kongkx 2022-10-08 15:27:30 +08:00 via iPhone 打包服务器上也做个代理呗。 |
![]() | 6 JensenQian 2022-10-08 15:42:33 +08:00 |
![]() | 7 interim 2022-10-08 15:52:48 +08:00 ![]() 用 clash for windows 的 TUN 模式,用了之后再也没有关心过这些问题了。 |
![]() | 8 Opportunity 2022-10-08 16:07:55 +08:00 改用 yarn2 如何?现在也有好多把 node_modules 推到 git 上的实践了 https://github.com/yarnpkg/berry/tree/master/.yarn/cache |
![]() | 9 FreshOldMan 2022-10-08 16:11:23 +08:00 终端 proxy |
10 vivipure 2022-10-08 16:25:36 +08:00 修改 package-lock.json, 把依赖改为本地,然后用 npm ci 下载依赖 |
![]() | 11 rain0002009 2022-10-08 16:54:42 +08:00 不然更新一下 jspdf 我刚装的 都没这个依赖了 |
![]() | 12 DingJZ 2022-10-08 16:55:45 +08:00 我在公司打包的 macmini 上也挂了梯子,体验一下就上去了 |
13 renmu123 2022-10-08 17:01:17 +08:00 2.5.1 确实没这个依赖了或者可以下载一份代码到本地 |
14 sky857412 2022-10-08 18:29:17 +08:00 以前公司直接搞个 node_modules 的压缩包一起提交,服务器上解压,然后再编译 |
![]() | 15 mritd 2022-10-08 18:37:56 +08:00 via iPhone 最好的办法就是弄好梯子环境,否则过两天你会发现有的包代码里写死的去 github 下载 |
![]() | 16 hsfzxjy 2022-10-08 19:09:06 +08:00 via Android proxychains4 |
![]() | 17 CEBBCAT 2022-10-08 19:24:09 +08:00 买一台香港打包机 |
![]() | 18 xubingok OP 感觉诸位大佬.昨天发现 package.json 的 resolutions 字段似乎能应对这个场景,但是用下来没有效果,可能是我写法不对,我再研究研究. |
19 demoshengxw 2022-10-09 09:02:48 +08:00 via iPhone @interim 这个是正解,git 和 pip 要不还要一个个去代理 |
21 TequilaSea 2022-10-09 09:44:41 +08:00 我记得我遇到过一个类似的,但不确定对这个问题有没有效,我的解决办法是把 git 协议替换成 https 协议 |
![]() | 22 cy18 2022-10-09 10:04:48 +08:00 全局透明代理,设置好白名单或者黑名单,一劳永逸 |
![]() | 23 cnit 2022-10-09 11:56:28 +08:00 |
![]() | 24 xubingok OP @hellohy 啊?真的么?我昨天搞了一个下午,看了 N 篇文章,都有提到 yarn.我一直以为这个 resolutions 是两者都支持的.支持需要高版本的 npm.. |
![]() | 25 xubingok OP 已经使用 yarn 的 resolutions 解决... npm 的 resolutions 倒也不是不支持.只是需要先执行 npx npm-force-resolutions 修改 lock 文件,然后在 install.而且在写法上也没有 yarn 这么灵活,很难用. |
![]() | 26 xubingok OP @TequilaSea 这招用处不大...仅对某些不支持 ssh 的环境有用,根本原因还是墙的问题. |