Ir al contenido
Sonenta

CLI

v0.48.4 · npm · MIT

@sonenta/cli

Una línea de comandos ligera y scriptable para todo lo que de otro modo harías en el dashboard: importar un proyecto i18next existente, hacer push y pull de traducciones, comparar la CI con el remoto, publicar una release de CDN y crear un snapshot de los bundles para un build offline-first. MIT, en npm.

Instalación

Solo npm, no hay fórmula de Homebrew para la CLI. Requiere Node 18 o más reciente, e instala el comando sonenta.

terminal
1# instalar una vez, globalmente2npm i -g @sonenta/cli 4# o ejecutar sin instalar5npx @sonenta/cli <command>

Autenticarse

Cada llamada envía Authorization: ApiKey <prefix>.<secret> con el scope mcp:*. Inicia sesión una vez para almacenar la clave en ~/.sonenta/credentials, o define SONENTA_TOKEN en la CI.

terminal
1# interactivo, almacena la clave por host en ~/.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, sin prompt, la clave se lee del entorno6export SONENTA_TOKEN=snt_live_<prefix>.<secret>7sonenta push

Orden de resolución, gana el primero: la variable de entorno SONENTA_TOKEN, luego ~/.sonenta/credentials para el host activo. Genera la clave en Org Settings → API Keys con el scope mcp:*.

Configurar

sonenta init escribe un sonenta.config.json en tu repositorio (resuelto subiendo desde el directorio actual). Las credenciales viven aparte, por usuario, y nunca se commitean.

sonenta.config.json
1# commiteado en tu repositorio, ningún secreto aquí2{3  "host": "https://api.sonenta.dev",4  "project_uuid": "<project_uuid>",5  "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials, modo 0600, por usuario, nunca commitear2{ "default": "https://api.sonenta.dev",3  "hosts": {4    "https://api.sonenta.dev": { "api_key": "snt_live_<prefix>.<secret>" }5  } }

version_slug vale main por defecto. Mantén la clave API fuera de sonenta.config.json, solo tiene su sitio en el archivo de credenciales o en SONENTA_TOKEN.

Comandos

Agrupados según lo que estés haciendo, configurar la autenticación y la config, inspeccionar un proyecto o sincronizar traducciones. Cada comando pasa por la superficie MCP y respeta sonenta.config.json.

Auth y config

sonenta login Almacenar una clave API para un host.

Opciones

  • --host <url> Host API contra el que autenticarse.
  • --token <key> Pasar la clave sin prompt en lugar de pedirla.
  • --email <email> cmd_login_flag_email
  • --default cmd_login_flag_default

Ejemplo

sonenta login --host https://api.sonenta.dev --token snt_live_<prefix>.<secret>
sonenta logout Eliminar las credenciales almacenadas de un host.

Opciones

Sin opciones.

Ejemplo

sonenta logout
sonenta whoami Mostrar el host activo y una clave enmascarada.

Opciones

Sin opciones.

Ejemplo

sonenta whoami
sonenta init Generar sonenta.config.json para un proyecto.

Opciones

  • --project <uuid> UUID del proyecto a escribir en la config (obligatorio).
  • --version <slug> Slug de versión a apuntar (por defecto main).
  • --force Sobrescribir un archivo de config existente.

Ejemplo

sonenta init --project <uuid> --version main

Inspeccionar

sonenta projects list Listar los proyectos accesibles para tu clave.

Opciones

Sin opciones.

Ejemplo

sonenta projects list
sonenta keys list Listar las claves con la forma namespace_slug/key_name.

Opciones

  • --namespace <slug> Restringir a un namespace.

Ejemplo

sonenta keys list --namespace common
sonenta status Comparar tu locales/ local con el remoto.

Opciones

  • --language <code> Limitar la comparación a un idioma.
  • --namespace <slug> Limitar la comparación a un namespace.
  • --src <dir> Directorio de origen (por defecto locales).

Ejemplo

sonenta status
sonenta missing Listar las claves faltantes detectadas en tiempo de ejecución.

Opciones

  • --language <code> Filtrar por idioma.
  • --namespace <slug> Filtrar por namespace.
  • --limit <n> Limitar el número de filas.

Ejemplo

sonenta missing --limit 50

Importación y sincronización

sonenta import <files...> Importación i18next en una sola pasada, anidado o plano; crea las claves, actualiza las traducciones, idempotente.

Opciones

  • --dry-run Solo vista previa; no envía nada.
  • --status <draft|translated> Estado entrante (por defecto translated).
  • --language <code> Forzar el idioma en lugar de deducirlo de la ruta.
  • --namespace <slug> Forzar el namespace (obligatorio para un <lang>.json simple).
  • --version <slug> Apuntar a una versión no predeterminada.

Ejemplo

sonenta import locales/fr/common.json
sonenta push Hacer push de todo el árbol locales/ local en una sola llamada de import.

Opciones

  • --src <dir> Directorio de origen (por defecto locales).
  • --dry-run Solo vista previa; no envía nada.
  • --status <state> Estado entrante (por defecto translated).

Ejemplo

sonenta push --dry-run
sonenta pull Escribir las traducciones remotas en locales/<lang>/<namespace>.json (plano).

Opciones

  • --language <code> Limitar a un idioma.
  • --namespace <slug> Limitar a un namespace.
  • --dest <dir> Directorio de destino (por defecto locales).

Ejemplo

sonenta pull --language fr
sonenta export Exportar como JSON i18next, plano por defecto, --nested para árboles.

Opciones

  • --nested Emitir árboles anidados en lugar de claves planas.
  • --out <dir> Escribir archivos en un directorio en lugar de en stdout.

Ejemplo

sonenta export --nested --out ./dump
sonenta releases publish Disparar una release de CDN; los bundles publicados se sirven a tus apps desde el CDN.

Opciones

  • --version <slug> Versión a publicar (por defecto main).
  • --dry-run Solo vista previa; no publica nada.

Ejemplo

sonenta releases publish
sonenta snapshot Recuperar los bundles públicos del CDN en un módulo de build para el fallback offline-first del SDK.

Opciones

  • --format <ts|json> Formato de salida: ts (por defecto) o json.
  • --out <file> Escribir en un archivo en lugar de en stdout.
  • --cdn <base> Base del CDN (por defecto https://cdn.sonenta.com).

Ejemplo

sonenta snapshot --out src/sonenta-bundles.ts

Cada comando también acepta --host <url> para sobrescribir el host API configurado durante una sola ejecución.

Siguiente