@sonenta/cli
Una riga di comando leggera e scriptabile per tutto ciò che altrimenti fareste nella dashboard: importare un progetto i18next esistente, fare push e pull delle traduzioni, confrontare la CI con il remoto, pubblicare una release CDN e creare uno snapshot dei bundle per una build offline-first. MIT, su npm.
Installazione
Solo npm, non esiste una formula Homebrew per la CLI. Richiede Node 18 o più recente e installa il comando sonenta.
terminal
1# installa una volta, globalmente2npm i -g @sonenta/cli 4# oppure esegui senza installare5npx @sonenta/cli <command>
Autenticazione
Ogni chiamata invia Authorization: ApiKey <prefix>.<secret> con scope mcp:*. Effettuate il login una volta per memorizzare la chiave in ~/.sonenta/credentials, oppure impostate SONENTA_TOKEN in CI.
terminal
1# interattivo, memorizza la chiave per 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, senza prompt, la chiave viene letta dall'ambiente6export SONENTA_TOKEN=snt_live_<prefix>.<secret>7sonenta push
Ordine di risoluzione, vince il primo: la variabile d'ambiente SONENTA_TOKEN, poi ~/.sonenta/credentials per l'host attivo. Generate la chiave sotto Org Settings → API Keys con scope mcp:*.
Configurazione
sonenta init scrive un sonenta.config.json nel vostro repository (risolto risalendo dalla directory corrente). Le credenziali vivono separatamente, per utente, e non vengono mai committate.
sonenta.config.json
1# committato nel vostro repository, nessun segreto qui2{3 "host": "https://api.sonenta.dev",4 "project_uuid": "<project_uuid>",5 "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials, modalità 0600, per utente, da non committare mai2{ "default": "https://api.sonenta.dev",3 "hosts": {4 "https://api.sonenta.dev": { "api_key": "snt_live_<prefix>.<secret>" }5 } }
version_slug vale main per impostazione predefinita. Tenete la chiave API fuori da sonenta.config.json, appartiene solo al file delle credenziali o a SONENTA_TOKEN.
Comandi
Raggruppati per attività, configurare autenticazione e config, ispezionare un progetto o sincronizzare le traduzioni. Ogni comando passa attraverso la superficie MCP e rispetta sonenta.config.json.
Auth e config
sonenta login Memorizzare una chiave API per un host. Opzioni
-
--host <url> Host API contro cui autenticarsi. -
--token <key> Passare la chiave senza prompt invece che interattivamente. -
--email <email> cmd_login_flag_email -
--default cmd_login_flag_default
Esempio
sonenta login --host https://api.sonenta.dev --token snt_live_<prefix>.<secret> sonenta logout Rimuovere le credenziali memorizzate di un host. sonenta whoami Mostrare l'host attivo e una chiave mascherata. sonenta init Generare sonenta.config.json per un progetto. Opzioni
-
--project <uuid> UUID del progetto da scrivere nella config (obbligatorio). -
--version <slug> Slug di versione da puntare (predefinito main). -
--force Sovrascrivere un file di config esistente.
Esempio
sonenta init --project <uuid> --version main Ispezionare
sonenta projects list Elencare i progetti accessibili dalla vostra chiave.
Esempio
sonenta projects list sonenta keys list Elencare le chiavi nella forma namespace_slug/key_name. Opzioni
-
--namespace <slug> Limitare a un namespace.
Esempio
sonenta keys list --namespace common sonenta status Confrontare la vostra locales/ locale con il remoto. Opzioni
-
--language <code> Limitare il confronto a una lingua. -
--namespace <slug> Limitare il confronto a un namespace. -
--src <dir> Directory sorgente (predefinito locales).
Esempio
sonenta status sonenta missing Elencare le chiavi mancanti rilevate a runtime. Opzioni
-
--language <code> Filtrare per lingua. -
--namespace <slug> Filtrare per namespace. -
--limit <n> Limitare il numero di righe.
Esempio
sonenta missing --limit 50 Import e sincronizzazione
sonenta import <files...> Import i18next in un'unica passata, annidato o piatto; crea le chiavi, aggiorna le traduzioni, idempotente. Opzioni
-
--dry-run Solo anteprima; non invia nulla. -
--status <draft|translated> Stato in ingresso (predefinito translated). -
--language <code> Forzare la lingua invece di dedurla dal percorso. -
--namespace <slug> Forzare il namespace (obbligatorio per un <lang>.json nudo). -
--version <slug> Puntare a una versione non predefinita.
Esempio
sonenta import locales/fr/common.json sonenta push Fare push dell'intero albero locales/ locale in un'unica chiamata di import. Opzioni
-
--src <dir> Directory sorgente (predefinito locales). -
--dry-run Solo anteprima; non invia nulla. -
--status <state> Stato in ingresso (predefinito translated).
Esempio
sonenta push --dry-run sonenta pull Scrivere le traduzioni remote in locales/<lang>/<namespace>.json (piatto). Opzioni
-
--language <code> Limitare a una lingua. -
--namespace <slug> Limitare a un namespace. -
--dest <dir> Directory di destinazione (predefinito locales).
Esempio
sonenta pull --language fr sonenta export Esportare in JSON i18next, piatto per impostazione predefinita, --nested per gli alberi. Opzioni
-
--nested Emettere alberi annidati invece di chiavi piatte. -
--out <dir> Scrivere i file in una directory invece che su stdout.
Esempio
sonenta export --nested --out ./dump sonenta releases publish Attiva una release CDN; i bundle pubblicati vengono serviti alle tue app dal CDN. Opzioni
-
--version <slug> Versione da pubblicare (predefinito main). -
--dry-run Solo anteprima; non pubblica nulla.
Esempio
sonenta releases publish sonenta snapshot Recuperare i bundle CDN pubblici in un modulo di build per il fallback offline-first dell'SDK. Opzioni
-
--format <ts|json> Formato di output: ts (predefinito) o json. -
--out <file> Scrivere su un file invece che su stdout. -
--cdn <base> Base CDN (predefinito https://cdn.sonenta.com).
Esempio
sonenta snapshot --out src/sonenta-bundles.ts Ogni comando accetta anche --host <url> per sovrascrivere l'host API configurato per una singola esecuzione.