Rust开发中无法下载某个GitHub文件的一种解决办法
01 前言
使用Rust
进行开发时,有时候依赖一些库,运行起来时就会动态去下载一些GitHub
文件,而由于众所周知的原因,网络经常是不给力的,因此不得不另想其他办法。
比如在使用trunk
时,首次运行trunk serve --open
,如果涉及到wasm-bindgen
、tailwindcss
的使用,本地版本不对应的话就会去GitHub
下载对应版本。
经常苦恼于无法正常从GitHub
进行下载资源的同学,应该知道有一些网站可以加速下载,也就是利用这个方式来处理。记录一下,抛砖引玉。
02 正文
环境:
Windows 11 64-bit
VS Code 1.95.3
rustup 1.27.1 (x86_64-pc-windows-msvc)
cargo 1.82.0
trunk 0.21.2
项目使用了Leptos框架
(官网)的CSR模式,涉及到wasm-bindgen
、tailwindcss
,以运行trunk serve --open
为例
2-1 问题定位
- 根据错误日志,定位到实际的下载行为发生在哪个库(可能要反复找多次)
这里因为直接运行了trunk
相关的命令,所以先将目标定为trunk
这个库。
2-2 找到源码位置
根据环境变量CARGO_HOME
设置的位置,找到对应库的源码目录。
假设CARGO_HOME
的值为:C:\cargo_home
那么找到目录C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX
其中XX
表示任意的数字或字母,每台机器的环境可能是不同的,以实际的为准。
Windows
用户可以在CMD
中执行以下命令,输出CARGO_HOME
的值:
echo %CARGO_HOME%
2-3 搜索关键词
在源码所在的目录,以关键词:https://github.com
搜索所有.rs
文件的内容,看哪些.rs
文件中出现了关键词。
至于如何搜索所有的文件内容,那就是各显神通了,可以用一些记事本软件,或者脚本实现。
Windows
用户可以在CMD
(请替换为实际的源码目录)中执行以下命令,找到包含关键词的.rs
文件:
cd /d C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX
powershell.exe -command "dir -Filter '*.rs' -File -Recurse | Where-Object{ [string]::Join('',(Get-Content -Path $_.FullName)).Contains('https://github.com') } | ForEach-Object {$_.FullName}"
这里输出了两个文件:
C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX\src\tools.rs
C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX\src\common\html_rewrite.rs
逐一查找,联系上下文代码,最后确定了,在tool.rs
中:
这里有一堆GitHub
相关的下载URL,在https://github.com/
前面加上可用的加速地址(可自行搜索),如:
可以全部修改或只改本地环境对应的URL。因为是Windows下开发,所以这里只改了"windows", "x86_64"
的URL。
2-4 修改并重新编译
修改后完成,保存文件,重新编译安装trunk
,因为是在本地修改了源码,所以只能进行离线编译,运行以下命令:
cargo install trunk --offline --force
编译并安装成功,然后重新运行:trunk serve --open
启动项目,可以看到能够加速下载Github
的资源了,完美解决。
03 后记
麻烦一点,也算是一种可用的办法,供大家参考。