git-clone-only
v0.1.0
Published
Clone uniquement un fichier ou sous-répertoire d'un dépôt git (sparse checkout). Supporte les tokens GitHub pour repos privés.
Downloads
163
Maintainers
Readme
git-clone-only
Clone uniquement un fichier ou un sous-répertoire d’un dépôt git grâce au sparse checkout moderne.
Idéal pour les monorepos volumineux ou quand vous n’avez besoin que d’une petite partie du code.
- Télécharge très peu de données (
--depth 1 + --filter=blob:none + sparse-checkout) - Garde un vrai dépôt git fonctionnel (remote, historique, etc.)
- Support complet des tokens GitHub (PAT) pour les dépôts privés
- Raccourci pratique
owner/repo - Nettoie automatiquement le token de l’URL distante après clonage (sécurité)
Installation / Utilisation
# Via npx (recommandé, aucune installation globale)
npx git-clone-only <url-ou-owner/repo> --only <chemin-relatif>
# Exemples
npx git-clone-only facebook/react --only packages/react-dom
npx git-clone-only https://github.com/sveltejs/kit.git --only packages/create-svelte
# Fichier unique
npx git-clone-only tj/commander.js --only README.mdOptions
| Option | Description |
|-----------------------|-------------|
| <repository> | URL git complète ou raccourci owner/repo (GitHub) |
| [directory] | Nom du dossier cible (défaut = nom du dépôt) |
| --only <chemin> | Requis. Chemin relatif du fichier ou dossier à extraire |
| -b, --branch <nom> | Branche / tag spécifique |
| -t, --token <jeton> | Token GitHub (ou utilisez GITHUB_TOKEN / GH_TOKEN) |
| -v, --version | Version |
| -h, --help | Aide |
Exemples détaillés
1. Sous-répertoire (défaut : dossier = nom du dépôt)
npx git-clone-only sveltejs/kit --only packages/create-svelte
cd kit
ls packages/create-svelte # contient le code demandé
# Le reste du dépôt (root README, autres packages...) n'a pas été cloné2. Fichier unique
npx git-clone-only https://github.com/expressjs/express --only README.md
cd express
cat README.md
ls # seul README.md + .git existent à la racine3. Avec branche spécifique
npx git-clone-only vercel/next.js my-next --only examples/basic-css --branch canary
cd my-next4. Dépôt privé GitHub (token)
# Via variable d'environnement (recommandé)
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx npx git-clone-only org/secret-repo --only internal/config
# Ou via l'option
npx git-clone-only org/secret-repo --only src --token ghp_xxxxxxxxLe token n’est jamais conservé dans .git/config après le clonage.
5. Cible explicite + token + branche
npx git-clone-only \
https://github.com/mon-entreprise/monorepo \
mon-projet \
--only packages/mon-projet \
--branch v2.3 \
--token "$GITHUB_TOKEN"Comment ça marche ?
git clone --depth 1 --sparse --filter=blob:none ...git sparse-checkout set <chemin>git remote set-url origin <url-propre>(supprime le token si présent)
Résultat : un dépôt git valide dont l’arborescence de travail ne contient que le chemin demandé.
Notes importantes
- Nécessite Git ≥ 2.25 (la plupart des machines 2023+ sont ok).
- Le token est injecté uniquement dans l’URL HTTPS pendant le clone. Il est retiré immédiatement après.
- Pour les dépôts privés, utilisez un fine-grained PAT ou classic PAT avec les droits
repo(oucontents:readpour fine-grained). - Ce package ne fait pas de "flatten" (le sous-dossier reste à son emplacement relatif). C’est volontaire pour rester proche de la sémantique git.
Développement local
git clone https://github.com/<vous>/git-cloner.git # ou le repo de ce projet
cd git-cloner
npm install
node bin/git-clone-only.js --helpPublication
Le package est publié sous le nom git-clone-only sur npm (le nom git-cloner étant déjà pris).
npm publishPuis testez immédiatement :
npx git-clone-only@latest sveltejs/kit --only packages/create-svelte --helpLicence
MIT
Fait avec ❤️ pour cloner plus intelligemment.
