Skip to content

A simple tool to "nab" a subfolder from a git repository

Notifications You must be signed in to change notification settings

Alan-221b/gitnab

Repository files navigation

gitnab

npm version CI Quality Gate Status Coverage

Nab just what you need from any Git repo

A CLI tool to extract a subfolder from GitHub or GitLab repositories into your current directory (or any destination).

Installation

# Use directly with npx (no installation required)
npx gitnab <url> [destination]

# Or install globally
npm install -g gitnab

Usage

# Extract a folder to current directory
npx gitnab https://github.com/owner/repo/tree/main/examples .

# Extract to a specific directory
npx gitnab https://github.com/owner/repo/tree/main/src/components ./my-components

# Keep the folder name in output
npx gitnab -k https://github.com/owner/repo/tree/main/examples
# Creates ./examples/ directory

Supported Platforms

GitHub

npx gitnab https://github.com/owner/repo/tree/branch/path/to/folder

GitLab

npx gitnab https://gitlab.com/namespace/project/-/tree/branch/path/to/folder

Options

Option Short Description
--keep-folder-name -k Keep the folder name in output
--output <dir> -o Output directory (alternative to positional arg)
--help -h Show help message
--version -v Show version number

Examples

Extract Next.js examples from GitHub

npx gitnab https://github.com/vercel/next.js/tree/canary/examples/hello-world .

Extract GitLab documentation

npx gitnab https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc/api ./gitlab-docs

Keep folder structure

npx gitnab -k https://github.com/facebook/react/tree/main/packages/react
# Creates ./react/ directory with contents

Use with different branches/tags

# From a specific branch
npx gitnab https://github.com/owner/repo/tree/develop/src/utils .

# From a tag
npx gitnab https://github.com/owner/repo/tree/v1.0.0/examples .

Requirements

  • Node.js 18 or higher (uses native fetch)

How It Works

  1. Parses the URL to detect the platform (GitHub or GitLab)
  2. Extracts owner, repo, branch, and path from the URL
  3. Downloads the repository tarball from the platform's API
  4. Streams and extracts only the files within the requested subfolder
  5. Writes files to the destination directory

License

MIT

About

A simple tool to "nab" a subfolder from a git repository

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •