Package Exports
- git-ripper
- git-ripper/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (git-ripper) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Git-ripper
Download specific folders from GitHub repositories without cloning the entire codebase
Installation • Usage • Features • Examples • Configuration • Troubleshooting • Contributing • License
Why Git-ripper?
Have you ever needed just a single component from a massive repository? Or wanted to reference a specific configuration directory without downloading gigabytes of code? Git-ripper solves this problem by letting you extract and download only the folders you need, saving bandwidth, time, and disk space.
Features
- Selective Downloads: Fetch specific folders instead of entire repositories
- Resume Interrupted Downloads: Automatically resume downloads that were interrupted or failed
- Progress Tracking: Visual progress indicators with file-by-file download status
- File Integrity Verification: Ensures downloaded files are complete and uncorrupted
- Directory Structure: Preserves complete folder structure
- Custom Output: Specify your preferred output directory
- Branch Support: Works with any branch, not just the default one
- Archive Export: Create ZIP archives of downloaded content
- Checkpoint Management: View and manage saved download progress
- Simple Interface: Clean, intuitive command-line experience
- Lightweight: Minimal dependencies and fast execution
- No Authentication: Works with public repositories without requiring credentials
Installation
Requirements
Git-ripper requires Node.js >=16.0.0 due to its use of modern JavaScript features and built-in Node.js modules.
Global Installation (Recommended)
npm install -g git-ripper
This installs Git-ripper as a global command-line tool accessible from anywhere in your terminal.
On-demand Usage
npx git-ripper <github-folder-url>
Run Git-ripper directly without installation using npx
.
Usage
Basic Command
git-ripper https://github.com/username/repository/tree/branch/folder
With Custom Output Directory
git-ripper https://github.com/username/repository/tree/branch/folder -o ./my-output-folder
Creating ZIP Archive
git-ripper https://github.com/username/repository/tree/branch/folder --zip
Creating ZIP Archive with Custom Name
git-ripper https://github.com/username/repository/tree/branch/folder --zip="my-archive.zip"
Command Line Options
Option | Description | Default |
---|---|---|
-o, --output <directory> |
Specify output directory | Current directory |
--zip [filename] |
Create ZIP archive of downloaded content | - |
--no-resume |
Disable resume functionality | - |
--force-restart |
Ignore existing checkpoints and restart | - |
--list-checkpoints |
List all saved download checkpoints | - |
-V, --version |
Show version number | - |
-h, --help |
Show help | - |
Examples
Extract a Component Library
# Download React DOM package
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom
Get Configuration Files
# Extract VS Code build configuration
git-ripper https://github.com/microsoft/vscode/tree/main/build -o ./vscode-build-config
Download Documentation
# Get Node.js documentation
git-ripper https://github.com/nodejs/node/tree/main/doc -o ./node-docs
Copy UI Templates
# Extract Tailwind components
git-ripper https://github.com/tailwindlabs/tailwindcss/tree/master/src/components -o ./tailwind-components
Download and Create Archive
# Download React DOM package and create a ZIP archive
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom --zip
# Extract VS Code build configuration with custom archive name
git-ripper https://github.com/microsoft/vscode/tree/main/build --zip="vscode-build.zip"
Resume Downloads
Git-ripper now supports resuming interrupted downloads, making it perfect for large folders or unstable network connections.
Automatic Resume (Default Behavior)
# Start a download
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# If interrupted (Ctrl+C, network issues, etc.), simply run the same command again
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# It will automatically resume from where it left off
Force Restart
# Ignore any existing progress and start fresh
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench --force-restart
Disable Resume
# Use traditional behavior without resume functionality
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench --no-resume
Manage Checkpoints
# List all saved download progress
git-ripper --list-checkpoints
# Output shows:
# 1. ID: a1b2c3d4
# URL: https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# Progress: 45/120 files
# Last Updated: 2025-06-04T10:30:00Z
Resume Features
- Automatic Progress Saving: Downloads are checkpointed every few files
- File Integrity Verification: Ensures existing files are complete and valid
- Smart Recovery: Detects corrupted or incomplete files and re-downloads them
- Multi-Download Support: Manage multiple concurrent download projects
- Progress Indicators: Visual feedback showing completed vs remaining files
How It Works
Git-ripper operates in five stages:
- URL Parsing: Extracts repository owner, name, branch, and target folder path
- Resume Check: Looks for existing download progress and validates already downloaded files
- API Request: Uses GitHub's API to fetch the folder structure
- Content Download: Retrieves each file individually while maintaining directory structure and saving progress
- Local Storage or Archiving: Saves files to your specified output directory or creates an archive
The resume functionality uses checkpoint files stored in .git_ripper_checkpoints/
to track download progress, file integrity hashes, and metadata for each download session.
Configuration
Git-ripper works out of the box without configuration. For rate-limited GitHub API usage, authentication support is under development.
Troubleshooting
Common Issues
Rate Limit Exceeded
Error: Request failed with status code 403
Solution: GitHub limits unauthenticated API requests. Wait a few minutes and try again.
Invalid URL Format
Error: Invalid GitHub URL format
Solution: Ensure your URL follows the pattern: https://github.com/owner/repo/tree/branch/folder
Folder Not Found
Error: Path not found in repository
Solution: Verify the folder path exists in the specified branch and repository.
Resume Issues
If you encounter problems with resume functionality:
# Clear all checkpoints and start fresh
git-ripper https://github.com/owner/repo/tree/branch/folder --force-restart
# Or disable resume entirely
git-ripper https://github.com/owner/repo/tree/branch/folder --no-resume
Corrupted Download
If files appear corrupted after resume:
# Force restart will re-download everything
git-ripper https://github.com/owner/repo/tree/branch/folder --force-restart
The resume feature automatically detects and re-downloads corrupted files, but --force-restart
ensures a completely clean download.
Contributing
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions to Git-ripper are greatly appreciated.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
See the open issues for a list of proposed features and known issues.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- GitHub API for making this tool possible
- Everyone who has provided feedback and suggestions
Made with ❤️ by sairajB
If you find this tool useful, consider sponsoring its development