BetaBeta pública — Consulta las notas de lanzamiento
Documentación

Planificar la instalación de un primitivo

El comando solidiom plan resuelve el grafo de capacidades de un primitivo y emite un plan detallado con todas las dependencias necesarias, sus versiones, y cualquier violación de política. Es útil para inspeccionar qué se instalará antes de ejecutar solidiom add.

Uso básico

solidiom plan dialog

Salida:

Plan for dialog (package mode):

  @solidiom/[email protected] [requested]
  @solidiom/[email protected] [dependency]

2 packages resolved.

Salida JSON

Para integrar la planificación en scripts o pipelines:

solidiom plan dialog --json
{
  "primitive": "dialog",
  "mode": "package",
  "entries": [
    {
      "package": "@solidiom/dialog",
      "version": "0.0.1-next.0",
      "isAdapter": false,
      "reason": "requested"
    },
    {
      "package": "@solidiom/runtime",
      "version": "0.0.1-next.0",
      "isAdapter": false,
      "reason": "dependency"
    }
  ],
  "stylingOutputs": [],
  "violations": []
}

Modo de instalación

El modo se determina por la bandera --mode o por el valor de defaultMode en .solidiom/config.json:

solidiom plan dialog --mode source
solidiom plan select --mode package

Primitivos con adaptadores

Algunos primitivos requieren adaptadores adicionales para capacidades específicas:

solidiom plan select
Plan for select (package mode):

  @solidiom/[email protected] [requested]
  @solidiom/[email protected] [dependency]
  @solidiom/[email protected] [adapter]

3 packages resolved.

Los adaptadores aparecen marcados como [adapter] con la razón capability.

Entregables del nivel de producto

Verifica si un primitivo soporta un entregable específico:

solidiom plan button --deliverable component

Si el primitivo no declara el entregable solicitado, se reporta como violación:

Policy violations:
  "button" does not declare the "component" deliverable (available: primitive)

Los entregables válidos son: primitive, component, block, template, theme.

Perfiles de estilo

Verifica los perfiles de estilo disponibles para un primitivo:

solidiom plan button --styling tailwind

Si el primitivo no soporta el perfil solicitado:

Policy violations:
  "button" has no "tailwind" styling output (available: none)

Los perfiles válidos son: css, tailwind, unocss.

Resolución de versiones

La CLI resuelve las versiones reales siguiendo esta prioridad:

  1. Catálogo del registro — Lee registry/index.json desde una ruta personalizada, SOLIDIOM_REGISTRY_PATH, el directorio registry/ del monorepo, node_modules/@solidiom/registry/, o .solidiom/registry-cache.json
  2. node_modules — Escanea node_modules/@solidiom/<primitive>/package.json para dependencias y adaptadores
  3. Paquetes del monorepo (en desarrollo)
  4. Conocimiento incorporado de primitivos principales para escenarios sin conexión

El plan genera la lista de paquetes npm que deben instalarse, incluyendo cada componente y sus dependencias.

Verificación contra política

Si .solidiom/policy.json define restricciones de versiones, solidiom plan valida cada entrada:

{
  "allowedPrimitiveVersions": {
    "@solidiom/dialog": "^0.0.1"
  }
}
solidiom plan dialog
# Policy violations:
#   @solidiom/[email protected] not allowed by policy (requires ^0.0.1)

Cuando hay violaciones, el comando sale con código 1.

Registro personalizado

Para usar un registro personalizado o un catálogo local:

solidiom plan dialog --registry /path/to/local/registry

También puedes usar la variable de entorno SOLIDIOM_REGISTRY_PATH:

export SOLIDIOM_REGISTRY_PATH=/path/to/local/registry
solidiom plan dialog

Modo sin conexión

solidiom plan dialog --no-network

La bandera --no-network asegura que la resolución ocurra solo con datos locales: el catálogo del registro en disco, los paquetes en node_modules, o el conocimiento incorporado de primitivos principales.

Primitivos incorporados

La CLI conoce los siguientes primitivos principales para resolución sin conexión:

  • dialog, select, calendar, carousel
  • popover, tooltip, menu, combobox
  • date-picker, button, checkbox, switch
  • slider, accordion, tabs, collapsible
  • toast, listbox

Opciones

BanderaDescripción
--mode <package|source>Modo de instalación
--deliverable <tipo>Entregable del nivel de producto
--styling <css|tailwind|unocss>Perfil de estilo
--registry <url>URL del registro personalizado
--no-networkUsar solo datos locales del registro
--jsonSalida en formato JSON