La serialización es uno de los principios fundamentales en el desarrollo con Sitecore. Con la llegada de Sitecore CLI y el Content Serialization, el proceso de gestionar ítems de Sitecore como parte del código fuente se ha vuelto más robusto y eficiente. Si quieres entenderla mejor, exploraremos cómo funciona a continuación.
¿Qué es la Serialización?
La serialización en Sitecore es el proceso de convertir ítems de la base de datos de Sitecore (como plantillas, layouts, configuraciones) en archivos de texto plano que pueden ser versionados en sistemas de control de código como Git. Esto permite:
- Control de versiones: Rastrear cambios en el contenido y configuración
- Colaboración en equipo: Múltiples desarrolladores pueden trabajar simultáneamente
- Despliegues automatizados: Integración con pipelines de CI/CD
- Sincronización de entornos: Mantener consistencia entre local, desarrollo, y producción
Sitecore CLI: La Herramienta Principal
Sitecore CLI es una interfaz de línea de comandos que reemplaza y mejora herramientas anteriores como Unicorn y TDS. Utiliza el formato .yml (YAML) para almacenar los ítems serializados.
Instalación
dotnet tool install Sitecore.CLI --global
Configuración Básica
El archivo sitecore.json en la raíz del proyecto define la configuración:
{
"$schema": "https://sitecore.io/.schemas/root.schema.json",
"modules": [
"src/Project/MyProject/*.module.json",
"src/Feature/*/*.module.json",
"src/Foundation/*/*.module.json"
],
"plugins": [
"Sitecore.DevEx.Extensibility.Serialization@5.0.7"
]
}
Archivos Module.json
Cada módulo tiene su propio archivo .module.json que define qué ítems serializar:
{
"namespace": "Project.MyProject",
"items": {
"includes": [
{
"name": "templates",
"path": "/sitecore/templates/Project/MyProject",
"allowedPushOperations": "createUpdateAndDelete"
},
{
"name": "renderings",
"path": "/sitecore/layout/Renderings/Project/MyProject",
"allowedPushOperations": "createUpdateAndDelete"
}
]
}
}
Comandos Principales
1. Serialization Pull (Extraer)
Descarga ítems desde Sitecore a archivos locales:
dotnet sitecore ser pull
Este comando:
- Conecta con la instancia de Sitecore
- Lee los ítems definidos en las configuraciones
- Crea/actualiza archivos
.ymlen la carpeta local
2. Serialization Push (Subir)
Sube los archivos locales a Sitecore:
dotnet sitecore ser push
Operaciones que realiza:
- Crea nuevos ítems que no existen
- Actualiza ítems modificados
- Opcionalmente elimina ítems (según configuración)
3. Watch Mode (Modo Observación)
Sincroniza cambios automáticamente:
dotnet sitecore ser watch
Muy útil durante el desarrollo activo, detecta cambios en tiempo real y los sincroniza bidireccionalmente.
Estructura de Archivos Serializados
Los ítems se guardan en formato YAML con esta estructura:
---
ID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Parent: "parent-item-id"
Template: "template-id"
Path: /sitecore/content/MyProject/Home
DB: master
Languages:
- Language: en
Versions:
- Version: 1
Fields:
- ID: "field-id"
Hint: Title
Value: "Welcome to My Site"
Estrategias de Serialización
Por Capas (Helix)
En arquitectura Helix, cada capa tiene su configuración:
- Foundation: Componentes base y configuración compartida
- Feature: Funcionalidades específicas del negocio
- Project: Implementaciones específicas del sitio
Includes y Excludes
Control fino sobre qué serializar:
{
"items": {
"includes": [
{
"name": "content",
"path": "/sitecore/content/MyProject",
"rules": [
{
"path": "/Home",
"scope": "singleItem"
},
{
"path": "*",
"scope": "ignored"
}
]
}
]
}
}
Mejores Prácticas
- No serializar contenido editorial: Solo templates, settings y estructura
- Usar .gitignore apropiado: Excluir carpetas temporales
- Validar antes de push: Revisar cambios con
dotnet sitecore ser validate - Sincronizar regularmente: Hacer pull frecuentemente para evitar conflictos
- Documentar convenciones: Establecer reglas de equipo claras
Resolución de Conflictos
Cuando hay conflictos:
- Hacer backup: Siempre respaldar antes de resolver
- Comparar diferencias: Usar herramientas de diff
- Decidir estrategia: Mantener local, remoto, o merge manual
- Validar resultado: Probar después de resolver
Conclusión
La serialización con Sitecore CLI representa un avance significativo en la gestión de código fuente para proyectos Sitecore. Su integración nativa, velocidad y compatibilidad con XM Cloud la convierten en la opción predeterminada para desarrollos modernos.