Recuperación de fallos y operaciones sin conexión
La CLI de Solidiom incluye mecanismos de recuperación para fallos durante la instalación y soporte completo para entornos sin acceso a Internet.
Rollback de instalaciones de código fuente
Durante una instalación de código fuente, la CLI registra el contenido de cada archivo antes de escribirlo. Si la instalación falla, puedes restaurar el estado anterior.
El journal de rollback funciona así:
- Antes de escribir un archivo, se registra su contenido actual (o la ausencia del archivo)
- Si la instalación falla, se restaura cada archivo en orden inverso
- Los archivos que no existían antes de la instalación se eliminan
- Los archivos existentes recuperan su contenido original
Esto asegura que un fallo parcial nunca deje el proyecto en un estado inconsistente.
Resolución de conflictos
Si un archivo fue modificado localmente, puedes usar estas opciones:
solidiom add dialog --mode source --diff # ver los cambios pendientes
solidiom add dialog --mode source --force # sobrescribir archivos localesEl rollback actúa como un signal de seguridad: si algo falla, el estado anterior se restaura completamente sin intervención manual.
Creación de proyectos y limpieza
solidiom create usa un journal de limpieza similar:
- Si el usuario cancela con Ctrl+C durante la generación, solo se eliminan los directorios creados por esa ejecución
- Los directorios que ya existían antes de la invocación nunca se eliminan
- Si la instalación de dependencias falla, se limpian todos los archivos generados
solidiom create my-app --template vite-solid-router
# Ctrl+C durante la ejecución
# Create cancelled - no files left behind.Operación sin conexión
La CLI funciona completamente sin conexión cuando se configura correctamente:
Resolución sin conexión
La resolución de primitivos sigue esta cadena de prioridad:
- Catálogo del registro local (
registry/index.json) - Paquetes en
node_modules - Conocimiento incorporado de primitivos principales
Con la bandera --no-network, la CLI no realiza solicitudes de red:
solidiom plan dialog --no-network
solidiom add dialog --mode source --no-network
solidiom verify ./dist/dialog.tgz --no-networkPrimitivos incorporados
La CLI incluye conocimiento de los primitivos principales para escenarios de arranque sin conexión:
dialog,select,calendar,carouselpopover,tooltip,menu,comboboxdate-picker,button,checkbox,switchslider,accordion,tabs,collapsibletoast,listbox
Estos primitivos incorporados solo confirman el entregable primitive y no declaran soporte de estilo ni de nivel de producto no verificado.
Instalación en entorno air-gapped
Para desplegar Solidiom en un entorno sin acceso a Internet, sigue estos pasos.
Paso 1: Espejar paquetes en un registro privado
En una máquina con acceso a Internet, usa Verdaccio como proxy:
npx verdaccio --config ./verdaccio-config.yaml &
until curl -s http://localhost:4873 > /dev/null; do sleep 1; done
pnpm add @solidiom/runtime @solidiom/dialog @solidiom/select \
--registry http://localhost:4873 \
--ignore-workspaceO publica los artefactos del monorepo directamente:
pnpm --filter "@solidiom/*" -r exec pnpm pack
for tarball in packages/*/solidiom-*.tgz; do
npm publish "$tarball" --registry http://localhost:4873
doneCopia el directorio ./storage de Verdaccio al entorno sin conexión.
Paso 2: Espejar el catálogo del registro
El catálogo del registro (index.json) es necesario para la resolución de dependencias:
cp registry/index.json /path/to/internal-cdn/solidiom/registry/index.jsonO servido desde el directorio de almacenamiento de Verdaccio:
cp registry/index.json ./verdaccio-storage/@solidiom/registry/index.jsonPaso 3: Configurar el registro interno
En el proyecto del entorno sin conexión, configura .solidiom/config.json o usa la variable de entorno:
export SOLIDIOM_REGISTRY_PATH=/path/to/local/registryPaso 4: Instalar primitivos
Con Verdaccio ejecutándose localmente y el catálogo en su lugar:
npx verdaccio --config ./verdaccio-config.yaml &
solidiom add dialog --registry http://localhost:4873 --no-network
solidiom add select --registry http://localhost:4873 --no-network
solidiom add calendar --registry http://localhost:4873 --no-networkVerificación
solidiom plan dialog --registry http://localhost:4873 --no-network --json
ls node_modules/@solidiom/dialog
ls node_modules/@solidiom/runtime
pnpm buildProcedencia de instalaciones
El lockfile .solidiom/lock.json registra la procedencia de cada instalación:
verified— la instalación pasó la verificación contra el manifiesto del registroprovenance: "unverified"— la instalación se realizó con--allow-unverified
Puedes verificar la procedencia con:
solidiom inspect provenance
solidiom verify --registry
solidiom doctorPara inspeccionar el plan de resolución de dependencias:
solidiom plan --jsonsolidiom doctor reporta entradas no verificadas como advertencias:
solidiom doctor
source-install provenance (3 unverified entries in lock.json)Registro dañado o no confiable
Si un archivo de registro existe pero no pasa la validación del esquema, la CLI no lo ignora silenciosamente. En lugar de caer al siguiente candidato, reporta un error. Un registro no confiable o corrupto no se trata como “ausente”.
La configuración de .solidiom/policy.json determina qué nivel de verificación es requerido para cada entorno.
Referencia
Consulta tools/offline-fixture/ en el repositorio para un ejemplo completo:
verdaccio-config.yaml— configuración de Verdaccio para espejo localrun-offline-test.sh— script automatizado que valida el flujo de trabajo sin conexión