La CLI (interfaz de línea de comandos) de Salesforce es la piedra angular del desarrollo de Salesforce y, como cualquier otra herramienta, evoluciona con el tiempo. Esta publicación es la segunda de una serie de blogs de dos partes sobre sf
(v2), la nueva y mejorada CLI de Salesforce. En la Parte 1 , echamos un vistazo a las novedades de sf
(v2) y, en esta parte final, exploraremos los nuevos comandos de estilo sf
y patrones de banderas y compartiremos cómo puede migrar desde comandos de estilo sfdx
y patrones basados en banderas. en nuestra experiencia con aplicaciones de muestra . Si bien la migración puede parecer intimidante a primera vista, compartiremos algunos consejos sobre cómo facilitar la transición.
Conozca los comandos de estilo sf
Si ha estado usando la CLI durante algún tiempo, probablemente comenzó a notar una serie de advertencias en los comandos que usa con frecuencia, como este:
sfdx force:source:push
Warning: We plan to deprecate this command in the future. Try using the "project deploy start" command instead.»>
Estos cambios son el resultado del trabajo continuo en Salesforce CLI Unification que comenzó hace varios lanzamientos (más detalles en la primera parte de esta serie).
Desde entonces, cada vez que instala la CLI de Salesforce, obtiene los dos ejecutables ( sfdx
y sf
). Puede usar cualquiera de estos ejecutables ya que la mayoría de los comandos son interoperables, pero le recomendamos que comience a usar sf
en su trabajo diario para prepararse para el futuro.
Debido a que sf
cubre más que solo el desarrollo de la plataforma central, ofrece una nueva taxonomía de comandos simplificada que refleja el flujo de trabajo de un desarrollador típico en lugar de las marcas, productos o funciones de Salesforce.
Un ejemplo práctico de esto es el comando sf org create
. Con este nuevo comando, la intención es más clara: llamas a la misma base de comandos con scratch
, sandbox
, shape
, snapshot
o user
, mientras que en sfdx
tenías que usar una combinación de diferentes comandos ( force:org:create
, force:user:create
) y flags ( --type=scratch
o --type=sandbox
) para obtener el mismo resultado.
Otra característica interesante de sf
es que incluye más comandos visuales e interactivos, como la creación de organizaciones con la capacidad de reanudar operaciones de larga duración en caso de tiempo de espera.
Migrar al ejecutable sf
Además de simplemente cambiar el nombre del ejecutable de sfdx
a sf
, hay una serie de cambios que se aplican a los comandos CLI al actualizar sus proyectos. La documentación de la CLI de Salesforce proporciona una buena descripción general de estos cambios, pero destacaremos los que nos afectaron durante la actualización de nuestras aplicaciones de muestra.
Comandos sfdx
comunes y sus equivalentes sf
En primer lugar, el tema force
se eliminó de la mayoría de los comandos, lo cual es una buena noticia, ya que acorta los comandos. El otro cambio importante es que los temas, comandos y subcomandos, que antes estaban separados por dos puntos como en sfdx force:org:list
, ahora están separados por espacios, como en sf org list
.
Mirando más de cerca los comandos que usamos a diario cuando trabajamos en aplicaciones de muestra, aplicamos los siguientes cambios:
Comando sfdx heredado |
Comando sf equivalente |
Migración Comentarios |
sfdx force:org:delete -p -u recipes |
sf org delete scratch -p -o recipes |
Se debe agregar el subcomando scratch . El indicador de la organización de destino cambia de -u a -o . |
sfdx force:org:create -s -f config/project-scratch-def.json -d 30 -a recipes |
sf org create scratch -d -f config/project-scratch-def.json -y 30 -a recipes |
Se debe agregar el subcomando scratch . El indicador "asignar organización predeterminada" cambia de -s a -d . El indicador de duración de la organización borrador cambia de -d a -y . |
sfdx force:source:push |
sf project deploy start |
Este es un cambio significativo, pero el nuevo comando funciona para todos los formatos de proyecto (fuente o metadatos). Anteriormente, necesitaba comandos distintos. |
sfdx force:user:permset:assign -n recipes |
sf org assign permset -n recipes |
El tema cambia de user a org y cambia el orden de los subcomandos. |
sfdx force:data:tree:import -p data/data-plan.json |
sf data import tree -p data/data-plan.json |
|
sfdx force:org:open -p lightning/n/Hello |
sf org open -p lightning/n/Hello |
|
sfdx force:apex:test:run -c -r human -w 20 |
sf apex test run -c -r human -w 20 |
|
Si está buscando otros comandos, la documentación de CLI proporciona una lista completa de comandos sfdx con sus equivalentes sf . Cada vez que reemplace un comando, asegúrese de revisar sus banderas en busca de cambios, especialmente si usa las banderas de formato corto (un solo carácter) ( -o
en lugar de --target-org
por ejemplo). Puede ejecutar cualquier comando con el indicador -h
o --help
para obtener su descripción.
Automatice parte de la migración con expresiones regulares
ℹ️ Edición del 27 de julio de 2023: en lugar de expresiones regulares, puede usar un script de migración como se documenta aquí .
Cuando analizamos la migración de nuestros proyectos de aplicaciones de muestra , sabíamos que necesitaríamos automatizar parte del proceso, ya que había cerca de 1700 referencias a sfdx
en más de 200 archivos. Para obtener los resultados más precisos aquí, asegúrese de agregar un espacio después de sfdx
en su término de búsqueda y excluya la carpeta node_modules
de su búsqueda, como hicimos aquí:
Comenzar con una búsqueda es un buen primer paso. Le ayuda a darse cuenta de que tendrá que migrar sus comandos en un par de lugares, como:
- Scripts de integración continua
- Guiones de desarrollo local
- Documentación
Luego puede ir más allá experimentando con una búsqueda y reemplazo de expresiones regulares (RegEx) en VS Code. Este enfoque es una forma rápida de iniciar la migración. Funciona bien para la búsqueda, pero no es perfecto como reemplazo, ya que algunos comandos requieren actualizaciones manuales. En cualquier caso, siempre pruebe el resultado de sus cambios antes de enviarlos a producción.
Comience ejecutando esta búsqueda RegEx y reemplace:
Tenga en cuenta el uso de tres grupos de captura encerrados entre paréntesis en la expresión de búsqueda y representados por signos de dólar seguidos de un número en la expresión de reemplazo. Los grupos de captura le permiten retener dinámicamente ciertos valores (palabras como temas, comandos y subcomandos en nuestro caso) mientras realiza cambios en el resto de la línea (reemplazando los separadores de dos puntos con espacios en nuestro caso).
Si desea obtener más información sobre este RegEx u otros, le recomiendo que consulte regex101.com , ya que proporciona una explicación de la sintaxis y un campo de juego para probar expresiones.
Aquí hay un ejemplo de la entrada y salida en VS Code de la expresión anterior (no olvide activar el modo RegEx como lo indica la flecha roja):
Notará que esta primera ronda de búsqueda y reemplazo no es perfecta ya que obtiene algunos caracteres de espacio adicionales en el texto reemplazado. Puede arreglar esto fácilmente ejecutando una segunda operación RegEx de búsqueda y reemplazo como esta:
Una vez que ejecute este último RegEx, todavía hay un par de cambios manuales que necesitará para operar. Como vimos anteriormente en la tabla de equivalencia de comandos, estas son las cosas clave a tener en cuenta:
- Algunos comandos usan diferentes temas y subcomandos. Por ejemplo,
sf user assign permset
es incorrecto: user
debe ser reemplazado por org
.
- Algunas banderas necesitan ser cambiadas. Por ejemplo,
sf org create scratch -s -f config/project-scratch-def.json -d 30 -a recipes
es incorrecto: el indicador -d
debe reemplazarse por -y
y el indicador -s
debe reemplazarse por -d
.
Afortunadamente, la mayoría de estos cambios no son demasiado difíciles de aplicar y puede migrar con bastante rapidez a los comandos de estilo sf
. Lo dejaremos con una vista de diferencias de GitHub que resume todos los cambios que fueron necesarios para migrar una de nuestras aplicaciones de muestra.
palabras de cierre
Eso es un resumen de esta breve descripción general de la migración de los comandos sfdx
-style a los comandos sf
-style. Vislumbró el beneficio del ejecutable sf
y su nueva sintaxis. Esperamos que se beneficie de nuestra experiencia de migración y de nuestros consejos al actualizar sus proyectos.
Recursos
Sobre el Autor
Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido técnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, robótica y VR. Sígalo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .