@sonenta/cli
Eine schlanke, skriptfähige Kommandozeile für alles, was Sie sonst im Dashboard erledigen würden: ein bestehendes i18next-Projekt importieren, Übersetzungen pushen und pullen, die CI gegen das Remote vergleichen, ein CDN-Release veröffentlichen und Bundles für einen Offline-First-Build snapshotten. MIT, auf npm.
Installation
Nur npm, es gibt keine Homebrew-Formel für die CLI. Erfordert Node 18 oder neuer und installiert den Befehl sonenta.
terminal
1# einmal global installieren2npm i -g @sonenta/cli 4# oder ohne Installation ausführen5npx @sonenta/cli <command>
Authentifizieren
Jeder Aufruf sendet Authorization: ApiKey <prefix>.<secret> mit dem Scope mcp:*. Melden Sie sich einmal an, um den Schlüssel in ~/.sonenta/credentials zu speichern, oder setzen Sie SONENTA_TOKEN in der CI.
terminal
1# interaktiv, speichert den Schlüssel pro Host in ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.dev --token snt_live_<prefix>.<secret>3Logged in as user@example.com (Acme Inc) on https://api.sonenta.dev. 5# CI, ohne Eingabeaufforderung, Schlüssel wird aus der Umgebung gelesen6export SONENTA_TOKEN=snt_live_<prefix>.<secret>7sonenta push
Auflösungsreihenfolge, der erste gewinnt: die Umgebungsvariable SONENTA_TOKEN, dann ~/.sonenta/credentials für den aktiven Host. Erstellen Sie den Schlüssel unter Org Settings → API Keys mit dem Scope mcp:*.
Konfigurieren
sonenta init schreibt eine sonenta.config.json in Ihr Repository (aufgelöst durch Hochlaufen vom aktuellen Verzeichnis). Anmeldedaten liegen separat, pro Benutzer, und werden niemals committet.
sonenta.config.json
1# in Ihr Repository committet, keine Geheimnisse hier2{3 "host": "https://api.sonenta.dev",4 "project_uuid": "<project_uuid>",5 "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials, Modus 0600, pro Benutzer, niemals committen2{ "default": "https://api.sonenta.dev",3 "hosts": {4 "https://api.sonenta.dev": { "api_key": "snt_live_<prefix>.<secret>" }5 } }
version_slug ist standardmäßig main. Halten Sie den API-Schlüssel aus der sonenta.config.json heraus, er gehört ausschließlich in die Anmeldedaten-Datei oder in SONENTA_TOKEN.
Befehle
Gruppiert nach Verwendungszweck, Authentifizierung und Konfiguration einrichten, ein Projekt inspizieren oder Übersetzungen synchronisieren. Jeder Befehl läuft über die MCP-Oberfläche und beachtet sonenta.config.json.
Auth & Konfiguration
sonenta login Einen API-Schlüssel für einen Host speichern. Optionen
-
--host <url> API-Host, gegen den authentifiziert wird. -
--token <key> Den Schlüssel ohne Eingabeaufforderung übergeben statt am Prompt. -
--email <email> cmd_login_flag_email -
--default cmd_login_flag_default
Beispiel
sonenta login --host https://api.sonenta.dev --token snt_live_<prefix>.<secret> sonenta logout Die gespeicherten Anmeldedaten eines Hosts entfernen. sonenta whoami Den aktiven Host und einen maskierten Schlüssel anzeigen. sonenta init sonenta.config.json für ein Projekt generieren. Optionen
-
--project <uuid> UUID des Projekts, die in die Konfiguration geschrieben wird (erforderlich). -
--version <slug> Version-Slug als Ziel (Standard main). -
--force Eine bestehende Konfigurationsdatei überschreiben.
Beispiel
sonenta init --project <uuid> --version main Inspizieren
sonenta projects list Die für Ihren Schlüssel erreichbaren Projekte auflisten.
Beispiel
sonenta projects list sonenta keys list Schlüssel in der Form namespace_slug/key_name auflisten. Optionen
-
--namespace <slug> Auf einen Namespace beschränken.
Beispiel
sonenta keys list --namespace common sonenta status Ihr lokales locales/ gegen das Remote vergleichen. Optionen
-
--language <code> Den Vergleich auf eine Sprache beschränken. -
--namespace <slug> Den Vergleich auf einen Namespace beschränken. -
--src <dir> Quellverzeichnis (Standard locales).
Beispiel
sonenta status sonenta missing Zur Laufzeit erkannte fehlende Schlüssel auflisten. Optionen
-
--language <code> Nach Sprache filtern. -
--namespace <slug> Nach Namespace filtern. -
--limit <n> Die Anzahl der Zeilen begrenzen.
Beispiel
sonenta missing --limit 50 Import & Synchronisierung
sonenta import <files...> i18next-Import in einem Durchlauf, verschachtelt oder flach; erstellt Schlüssel, aktualisiert Übersetzungen, idempotent. Optionen
-
--dry-run Nur Vorschau; sendet nichts. -
--status <draft|translated> Eingehender Status (Standard translated). -
--language <code> Die Sprache erzwingen, statt sie aus dem Pfad abzuleiten. -
--namespace <slug> Den Namespace erzwingen (erforderlich für eine nackte <lang>.json). -
--version <slug> Eine nicht standardmäßige Version als Ziel.
Beispiel
sonenta import locales/fr/common.json sonenta push Den gesamten lokalen locales/-Baum in einem einzigen Import-Aufruf pushen. Optionen
-
--src <dir> Quellverzeichnis (Standard locales). -
--dry-run Nur Vorschau; sendet nichts. -
--status <state> Eingehender Status (Standard translated).
Beispiel
sonenta push --dry-run sonenta pull Remote-Übersetzungen nach locales/<lang>/<namespace>.json (flach) schreiben. Optionen
-
--language <code> Auf eine Sprache beschränken. -
--namespace <slug> Auf einen Namespace beschränken. -
--dest <dir> Zielverzeichnis (Standard locales).
Beispiel
sonenta pull --language fr sonenta export Als i18next-JSON exportieren, standardmäßig flach, --nested für Bäume. Optionen
-
--nested Verschachtelte Bäume statt flacher Schlüssel ausgeben. -
--out <dir> Dateien in ein Verzeichnis schreiben statt auf stdout.
Beispiel
sonenta export --nested --out ./dump sonenta releases publish Ein CDN-Release auslösen; die veröffentlichten Bundles werden Ihren Apps über das CDN ausgeliefert. Optionen
-
--version <slug> Zu veröffentlichende Version (Standard main). -
--dry-run Nur Vorschau; veröffentlicht nichts.
Beispiel
sonenta releases publish sonenta snapshot Die öffentlichen CDN-Bundles in ein Build-Modul holen für das Offline-First-Fallback des SDK. Optionen
-
--format <ts|json> Ausgabeformat: ts (Standard) oder json. -
--out <file> In eine Datei schreiben statt auf stdout. -
--cdn <base> CDN-Basis (Standard https://cdn.sonenta.com).
Beispiel
sonenta snapshot --out src/sonenta-bundles.ts Jeder Befehl akzeptiert außerdem --host <url>, um den konfigurierten API-Host für einen einzelnen Lauf zu überschreiben.