smallstack Blog

Interessante Themen rund um unsere Business Plattform

GitHub Language Stats: Präzise Programmiersprachen-Statistiken für Ihr Portfolio

21.02.2026 08:40:01
8 Aufrufe
GithubStatsStatistikLanguage StatsEntwickler Portfolio ToolsGithub Language Analytics CLICode Contribution Tracking

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 umschalten
  • a: Alle auswählen/abwählen
  • i: Auswahl invertieren
  • Enter: 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 5 ist sicher. Höhere Werte können GitHubs sekundäre Rate Limits triggern.
  • Zeitraum einschränken: Mit --from-year 2023 reduzieren 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