如何用curl/wget从多GitHub仓库直接下载文件夹至React项目?
解决GitHub文件夹下载及SVN冲突问题
一、用curl+tar精准提取目标文件夹
这是最直接的轻量方案,不会冗余下载仓库其他文件,还能指定本地路径:
- 下载client仓库的
proto文件夹到React项目指定目录:
curl -L https://github.com/celer-network/cBridge-typescript-client/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 "cBridge-typescript-client-main/proto" -C ./src/client-proto
- 下载transfer widget仓库的
proto文件夹到另一个目录:
curl -L https://github.com/celer-network/cBridge-transfer-widget/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 "cBridge-transfer-widget-main/proto" -C ./src/widget-proto
参数说明:
--strip-components=1:去掉压缩包顶层的仓库文件夹,直接提取内部的proto目录-C:指定提取到的本地目标路径,替换成你项目里的实际位置即可
二、用GitHub CLI工具简化操作
如果装了GitHub官方的gh命令行工具,下载单个文件夹更简洁:
gh repo download celer-network/cBridge-typescript-client --dir proto --output ./src/client-proto gh repo download celer-network/cBridge-transfer-widget --dir proto --output ./src/widget-proto
这个方法不需要手动构造压缩包链接,直接指定仓库和目标文件夹即可。
三、关于wget/curl直接下载文件夹的说明
GitHub本身没有提供直接下载单个文件夹的原生URL,所以单纯用wget或curl无法直接拉取整个文件夹内容。上面两种方法是最接近“直接下载文件夹”的实现,本质是下载仓库压缩包后只提取需要的目录,不会浪费带宽下载无关文件。
四、临时解决SVN冲突的方案
如果还是想用SVN,只要给两个proto文件夹指定不同的本地路径就能绕开冲突:
svn checkout https://github.com/celer-network/cBridge-typescript-client/trunk/proto ./src/client-proto svn checkout https://github.com/celer-network/cBridge-transfer-widget/trunk/proto ./src/widget-proto
内容的提问来源于stack exchange,提问作者ZeroPhase
相关产品推荐
相关产品推荐

