GitHub Language Stats: Präzise Programmiersprachen-Statistiken für Ihr Portfolio
Entwickler kennen das Problem: Das GitHub-Profil zeigt zwar die Anzahl der Contributions, aber keine sprachspezifischen Statistiken. Noch problematischer wird es, wenn Sie hauptsächlich in privaten Repositories arbeiten – diese Beiträge sind für niemanden sichtbar. Genau hier setzt github-lang-stats an: Ein leistungsstarkes CLI-Tool, das detaillierte, verifizierbare Programmiersprachen-Statistiken basierend auf Ihren tatsächlichen Code-Änderungen generiert.
Anders als die GitHub-API, die Repository-weite Statistiken unabhängig vom Autor liefert, analysiert dieses Tool ausschließlich die von Ihnen persönlich geänderten Dateien in jedem Commit. Das Ergebnis: Authentische, aussagekräftige Daten für Ihr Portfolio, Ihren Lebenslauf oder Ihre Entwickler-Website.
Die wichtigsten Vorteile auf einen Blick
✅ Präzise Sprach-Aufschlüsselung
Erhalten Sie exakte Statistiken darüber, wie viele Zeilen Sie in TypeScript, Python, Go oder jeder anderen Programmiersprache geändert haben. Kein Rätselraten mehr – nur harte Fakten basierend auf Ihren tatsächlichen Commits.
✅ Private Repositories sicher repräsentieren
Das Tool generiert aggregierte Statistiken aus privaten Repositories, ohne sensiblen Code oder Repository-Namen preiszugeben. Sie kontrollieren vollständig, welche Daten in der Ausgabe erscheinen.
✅ Verifizierbar und transparent
Jeder kann Ihre Statistiken mit seinem eigenen GitHub-Token validieren. Diese Transparenz schafft Vertrauen bei potenziellen Arbeitgebern oder Kunden.
✅ Intelligentes Caching
Unterbrochene Läufe werden automatisch an der letzten Position fortgesetzt. Der erste Durchlauf mag Zeit in Anspruch nehmen, aber nachfolgende Analysen sind blitzschnell – nur neue Commits werden verarbeitet.
✅ Flexible Filterung
Wählen Sie interaktiv Repositories aus, schließen Sie Infrastruktur-Sprachen wie HCL oder Dockerfile aus, und bestimmen Sie den Zeitraum Ihrer Analyse.
Wie funktioniert das Tool?
Das CLI arbeitet in vier intelligenten Phasen:
| Phase | Methode | API-Kosten | Rate Limit |
|---|---|---|---|
| 1. Repository-Erkennung | GraphQL contributionsCollection |
~20 Aufrufe (einer pro Jahr) | 5.000/Std |
| 2. Commit-SHA-Sammlung | GraphQL history(author: ...) |
~1 Aufruf pro 100 Commits | 5.000/Std |
| 3. Dateidetails pro Commit | REST API GET /repos/:owner/:repo/commits/:sha |
1 Aufruf pro Commit | 5.000/Std |
| 4. PR-Zählung (optional) | REST Search API | 1 Aufruf pro Repo | 30/Min |
Der Fortschritt wird in .github-lang-stats-cache/.json gespeichert, sodass unterbrochene Läufe nahtlos fortgesetzt werden können.
Die Metrik: lines_changed
Für jede Datei in jedem Commit zählt das Tool Hinzufügungen + Löschungen. Dies ist ein präziser Proxy für "Sprach-Aktivität" und spiegelt ausschließlich Ihre tatsächliche Arbeit wider – nicht die Ihrer Teamkollegen.
Installation und Verwendung
Schnellstart mit npx (keine Installation nötig)
npx github-lang-stats --token= --output=stats.json
Oder mit explizitem Benutzernamen:
npx github-lang-stats --user= --token= --output=stats.json
Globale Installation
npm i -g github-lang-stats
gls --token=
Das Kommando gls ist eine praktische Abkürzung für github-lang-stats.
Programmatische Nutzung in Ihrem Code
Installieren Sie das Paket als Abhängigkeit:
npm i github-lang-stats
Nutzen Sie die API in Ihrer TypeScript/JavaScript-Anwendung:
import { getGithubLangStats, type ProgressEvent } from "github-lang-stats";
const stats = await getGithubLangStats({
token: process.env.GITHUB_TOKEN,
fromYear: 2020,
excludeLanguages: ["JSON", "YAML"],
concurrency: 5,
includePRCounts: true,
onProgress: (e: ProgressEvent) => {
if (e.phase === "details") {
console.log(`${e.fetched}/${e.total} Commits verarbeitet`);
}
},
});
console.log(stats.totals);
// { TypeScript: 412000, JavaScript: 88000, Svelte: 43000 }
Repository-Übersicht abrufen
Möchten Sie nur eine Liste aller Repositories ohne vollständige Statistiken?
import { listRepositories } from "github-lang-stats";
const repos = await listRepositories({
token: process.env.GITHUB_TOKEN,
fromYear: 2020,
onProgress: (year) => console.log(`Scanne ${year}...`),
});
console.log(repos);
// [
// { owner: "octocat", name: "Hello-World", isPrivate: false },
// { owner: "meinteam", name: "private-projekt", isPrivate: true },
// ]
Perfekt für UI-Selektoren oder Vorfilterung vor der vollständigen Analyse.
Erweiterte Funktionen
Interaktive Repository-Auswahl
Mit dem Flag --select-repos öffnet sich nach der Repository-Erkennung ein interaktives Auswahlmenü:
gls --token= --select-repos
Sie sehen eine Checkbox-Liste aller Repositories (standardmäßig alle ausgewählt):
? Wählen Sie Repositories (42 gesamt)
❯◉ myorg/frontend
◉ myorg/monorepo
◉ octocat/personal-site
Tastenkombinationen:
Leertaste: Repository umschaltena: Alle auswählen/abwähleni: Auswahl invertierenEnter: Bestätigen und fortfahren
Token-Berechtigungen
Ihr GitHub Personal Access Token benötigt folgende Scopes:
| Scope | Grund |
|---|---|
repo |
Lesezugriff auf private Repositories |
read:user |
Abrufen verifizierter E-Mail-Adressen für Commit-Zuordnung |
Wichtige Kommandozeilen-Optionen
--from-year Frühestes Jahr (Standard: vor 10 Jahren)
--exclude-langs Kommagetrennte Sprachen ausschließen (z.B. HCL,JSON)
--concurrency Gleichzeitige REST-Anfragen (Standard: 5)
--exclude-commit-dates Commit-Daten aus Ausgabe entfernen
--exclude-pr-counts PR-Zählung aus Ausgabe entfernen
--select-repos Interaktive Repository-Auswahl
--stats-only Nur aus Cache aggregieren, keine neuen Daten holen
--reset Cache löschen und neu starten
Ausgabeformat
Das Tool generiert strukturierte JSON-Daten:
{
"totals": {
"TypeScript": 412000,
"JavaScript": 88000,
"Svelte": 43000
},
"byRepo": {
"myorg/myrepo": {
"contributionsCountPerLanguage": {
"TypeScript": 200000,
"CSS": 5000
},
"commitDates": ["2025-11-15", "2025-11-16"],
"prCount": 42,
"isPrivate": false
}
},
"meta": {
"user": "maxfriedmann",
"generatedAt": "2026-02-20T10:00:00.000Z",
"totalCommitsProcessed": 12450,
"totalRepos": 47,
"unit": "lines_changed"
}
}
Diese Daten können Sie direkt in Ihr Portfolio, Ihre Website oder Visualisierungen wie Heatmaps integrieren.
Praktische Tipps
⏱️ Zeitmanagement
- Erster Lauf: Bei 30.000 Commits kann die Analyse mehrere Stunden dauern (GitHub Rate Limit: 5.000 req/Std). Lassen Sie das Tool über Nacht laufen – Fortschritte werden alle 50 Commits gespeichert.
- Folgeläufe: Nur neue Commits seit dem letzten Lauf werden verarbeitet – meist in wenigen Minuten erledigt.
- PR-Sammlung: Die Search API erlaubt nur 30 Anfragen/Minute. Bei 100 Repositories dauert die PR-Zählung ~3-4 Minuten. Nutzen Sie
--exclude-pr-counts, wenn Sie diese Daten nicht benötigen.
🎯 Optimierung
- Infrastruktur-Sprachen ausschließen: Nutzen Sie
--exclude-langs HCL,Dockerfile,YAML, wenn Teamkollegen diese Dateien in gemeinsamen Repositories geändert haben. - Concurrency anpassen: Der Standardwert
5ist sicher. Höhere Werte können GitHubs sekundäre Rate Limits triggern. - Zeitraum einschränken: Mit
--from-year 2023reduzieren Sie die Datenmenge erheblich.
Fazit: Authentische Entwickler-Statistiken für Ihr Portfolio
github-lang-stats löst ein fundamentales Problem für moderne Entwickler: Die unsichtbare Arbeit in privaten Repositories und fehlende sprachspezifische Statistiken werden endlich messbar und präsentierbar. Das Tool bietet Ihnen:
- 📊 Präzise Daten basierend auf Ihren tatsächlichen Code-Änderungen
- 🔒 Datenschutz durch kontrollierte Aggregation privater Repository-Daten
- ✅ Verifizierbarkeit für Glaubwürdigkeit bei Arbeitgebern und Kunden
- ⚡ Effizienz durch intelligentes Caching und Fortschritts-Speicherung
Ob Sie Ihr technisches Portfolio aufbauen, sich für eine neue Position bewerben oder einfach Ihre Entwicklungs-Aktivitäten visualisieren möchten – dieses CLI-Tool gibt Ihnen die Daten, die Sie brauchen.
Jetzt ausprobieren!
Starten Sie noch heute mit der Analyse Ihrer GitHub-Aktivitäten:
npx github-lang-stats --token= --output=meine-stats.json
Haben Sie komplexe Anforderungen? smallstack entwickelt maßgeschneiderte Developer-Tools und Automatisierungen. Kontaktieren Sie uns für individuelle Lösungen, die perfekt zu Ihrem Workflow passen: https://smallstack.com