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 dialogSalida:
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 packagePrimitivos con adaptadores
Algunos primitivos requieren adaptadores adicionales para capacidades específicas:
solidiom plan selectPlan 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 componentSi 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 tailwindSi 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:
- Catálogo del registro — Lee
registry/index.jsondesde una ruta personalizada,SOLIDIOM_REGISTRY_PATH, el directorioregistry/del monorepo,node_modules/@solidiom/registry/, o.solidiom/registry-cache.json - node_modules — Escanea
node_modules/@solidiom/<primitive>/package.jsonpara dependencias y adaptadores - Paquetes del monorepo (en desarrollo)
- 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/registryTambién puedes usar la variable de entorno SOLIDIOM_REGISTRY_PATH:
export SOLIDIOM_REGISTRY_PATH=/path/to/local/registry
solidiom plan dialogModo sin conexión
solidiom plan dialog --no-networkLa 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,carouselpopover,tooltip,menu,comboboxdate-picker,button,checkbox,switchslider,accordion,tabs,collapsibletoast,listbox
Opciones
| Bandera | Descripció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-network | Usar solo datos locales del registro |
--json | Salida en formato JSON |