Versionado y Publicación de Paquetes con Nx Release

Rate this content
Bookmark

Aprende a publicar paquetes npm como un profesional utilizando el poder de Nx. Partiendo de un repositorio básico con varios paquetes, estableceremos una estrategia de versionado, una estructura de registro de cambios y un flujo de trabajo de publicación. Después, exploraremos las numerosas características y opciones de Nx Release que te permiten adaptarte a los procesos de tu organización.

FAQ

Para inicializar Nx en un repositorio existente, primero debes instalar el complemento NxJS y luego ejecutar la inicialización desde la línea de comandos o tu herramienta de desarrollo.

Nx Release es una herramienta que te permite elegir nuevas versiones para tus paquetes, generar un archivo de registro de cambios a nivel de espacio de trabajo y publicar todos tus paquetes en un registro remoto. Se configura en el archivo NxJSON indicando qué paquetes deseas publicar.

En Nx, puedes especificar qué paquetes deseas publicar configurando la propiedad de proyecto bajo 'release' en el archivo NxJSON. Esto te permite excluir aplicaciones o proyectos que no deseas publicar.

Realizar un 'dry run' con Nx Release significa ejecutar el proceso de publicación de manera simulada, sin realizar cambios reales. Esto permite previsualizar las operaciones de versionado y publicación sin afectar los archivos o el repositorio.

Nx Release, por defecto, mantiene todas las versiones de tus paquetes sincronizadas. Cada vez que incrementas la versión de uno, todos los demás se actualizarán al mismo nivel, facilitando así la gestión de compatibilidades entre paquetes.

Sí, Nx Release soporta la versionación independiente de paquetes, lo que te permite actualizar y publicar paquetes de forma individual sin necesidad de lanzar todos al mismo tiempo. Esto se configura mediante opciones específicas en Nx.

Nx Release ofrece una API programática que te permite importar sus principales bloques de construcción (versionado, registro de cambios y publicación) en tus propios scripts. Esto te permite personalizar y automatizar el proceso de lanzamiento según tus necesidades.

Austin Fahsl
Austin Fahsl
10 min
15 Feb, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

En esta Charla, Austin Faisal presenta Nx Release y demuestra cómo mejorar los procesos de versionado y publicación con él. La herramienta permite una ejecución de prueba para previsualizar los cambios, mantiene los paquetes sincronizados y genera registros de cambios. También automatiza la preparación, confirmación, etiquetado y publicación de cambios en el registro. Nx Release ofrece características adicionales como versionado independiente, versionado automático con confirmaciones convencionales, creación de lanzamientos en GitHub, renderizado personalizable de registros de cambios y una API programable.

1. Introducción a Nx Release

Short description:

Hola, mi nombre es Austin Faisal. Soy un mantenedor principal de Lerna, miembro del equipo principal de Nx, y te mostraré cómo mejorar tu proceso de versionado y publicación con Nx Release. Inicializaremos Nx en un repositorio existente, elegiremos una nueva versión para nuestros paquetes, generaremos un archivo de registro de cambios a nivel de espacio de trabajo y publicaremos todos nuestros paquetes en el registro remoto. Luego, cubriremos las características adicionales que ofrece Nx Release. Empecemos.

Soy un mantenedor principal de Lerna, miembro del equipo principal de Nx, y tengo experiencia en desarrollo web empresarial. Y te mostraré cómo mejorar tu proceso de versionado y publicación con Nx Release.

Primero, inicializaremos Nx en un repositorio existente. Luego, usaremos Nx Release para elegir una nueva versión para nuestros paquetes, generar un archivo de registro de cambios a nivel de espacio de trabajo y publicar todos nuestros paquetes en el registro remoto. Luego, cubriremos algunas características adicionales que ofrece Nx Release. Empecemos.

Así que partimos de un monorepo básico de JavaScript. Está utilizando espacios de trabajo de npm y tiene tres paquetes: inventory, requests y users. Lo primero que haremos es inicializar Nx e instalar el complemento NxJS. Así que responderé algunas de estas preguntas. Ninguno de los scripts necesita ejecutarse en orden, así que seguiré adelante y presionaré Enter. Ninguno es almacenable en caché y no voy a habilitar el almacenamiento en caché remoto. Sin embargo, definitivamente te animaría a investigar el almacenamiento en caché remoto para tu propio espacio de trabajo porque puede ahorrar mucho tiempo en CI y en tu flujo de trabajo local. Pero para este ejemplo, me centraré en Nx Release y simplemente lo omitiré.

De acuerdo, ahora voy a abrir el archivo NxJSON y le diremos a Nx exactamente qué paquetes queremos publicar. Haremos esto con la propiedad de proyecto bajo release. Esto es importante porque aunque Nx verá todos los proyectos en tu repositorio, no necesariamente quieres publicar todos ellos porque podrías tener aplicaciones o proyectos de testing finales u otras cosas que no son paquetes npm que deseas publicar. Así que en este caso, tenemos tres paquetes que queremos publicar. Todos están en la carpeta de paquetes, por lo que podemos usar este comodín para representar eso.

De acuerdo, luego vamos a confirmar nuestros cambios hasta ahora. Haremos esto para tener un árbol de trabajo fresco a partir de aquí. Y luego voy a agregar un cambio más. En realidad, voy a solucionar un error grave en los datos de inventario. Y por lo general, es mucho más difícil solucionar un error que simplemente agregar un comentario, pero esto funcionará para lo que necesitamos hacer. Así que voy a confirmar este cambio también. Y ahora podemos ejecutar Nx Release. Así que voy a ejecutar primero Nx Release dry run. Y estas dos opciones son muy importantes. La primera opción de release indica a Nx que esta es la primera vez que ejecutamos Nx Release.

2. Ejecutando Nx Release y Revisando los Cambios

Short description:

La opción de dry run te permite previsualizar los cambios sin escribirlos realmente en el disco o publicar los paquetes. Nx Release mantiene tus paquetes sincronizados de forma predeterminada, asegurando una fácil compatibilidad para los consumidores. Los archivos package JSON se actualizan con la nueva versión y también se actualizan las dependencias. El registro de cambios generado incluye los paquetes agregados y la corrección de errores reciente.

Así que no debes preocuparte por ninguna validación en torno a las etiquetas anteriores de git o asegurarte de que los paquetes existan en el registro remoto. Y la opción de dry run va a realizar esto como una prueba en seco. No va a escribir realmente ningún cambio en el disco. Va a omitir todas las operaciones de git. No va a publicar los paquetes. Solo nos dará una vista previa de lo que sucedería si no usáramos el dry run. Y esto es muy valioso cuando estamos lidiando con operaciones realmente difíciles de deshacer, como crear etiquetas de git, crear lanzamientos en GitHub, publicar paquetes en el registro.

Así que voy a seguir adelante y ejecutarlo. Y voy a elegir una versión menor. Entonces me pedirá qué tipo de cambio es este. Y diré menor. OK. El comando ha terminado. Y volvamos arriba y veamos qué sucedió. El primer paso es el versionado. Detecta cada uno de estos tres proyectos, inventory, requests, users. Lee la versión actual de cada uno como 0.0.1 del archivo package JSON. Y luego escribe la nueva versión basada en ese incremento menor que le dijimos que hiciera. La nueva versión, que es 0.1.0, la escribe en cada uno de los tres archivos package JSON. Ahora, Nx Release siempre mantendrá tus paquetes sincronizados de forma predeterminada. Así que cada vez que quieras incrementar la versión de alguno de ellos, incrementará la versión de todos ellos. Y así siempre estarás lanzando la misma versión para cada uno de tus paquetes. Esto es recomendado porque hace que sea muy fácil para los consumidores de tu paquete determinar qué versiones son compatibles. Porque si todos tienen el mismo número de versión, es muy, muy claro.

Si seguimos desplazándonos hacia abajo, podemos ver los cambios en los archivos package JSON. Y observarás que el paquete requests en realidad tiene una dependencia del paquete users. Y eso también fue actualizado por Nx Release. Y luego, aquí abajo, podemos ver el registro de cambios que se generaría. Así que el registro de cambios tiene una característica, que es la característica en la que agregué los paquetes users, requests e inventory anteriormente. Y luego está la corrección que acabamos de hacer en el paquete inventory.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

pnpm: un gestor de paquetes rápido y eficiente para JavaScript
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
Aprenderás sobre uno de los gestores de paquetes más populares para JavaScript y sus ventajas sobre npm y Yarn.Una breve historia de los gestores de paquetes de JavaScriptLa estructura aislada de node_modules creada por pnpmQué hace que pnpm sea tan rápidoQué hace que pnpm sea eficiente en el uso del espacio en discoSoporte para monoreposGestión de versiones de Node.js con pnpm
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn 4 es la próxima versión mayor de tu gestor de paquetes JavaScript favorito, con un enfoque en rendimiento, seguridad y experiencia del desarrollador. A lo largo de esta charla repasaremos sus nuevas características, cambios importantes y compartiremos nuestros planes a largo plazo para el proyecto.Si solo has oído hablar de Yarn sin probarlo aún, si no estás seguro de por qué la gente hace tanto alboroto con los gestores de paquetes, si te preguntas cómo tu gestor de paquetes puede hacer tu trabajo más sencillo y seguro, ¡esta es la charla perfecta para ti!
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
React Advanced Conference 2021React Advanced Conference 2021
21 min
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
¿Cómo construiremos aplicaciones web en el futuro? Aprendamos cómo esbuild y los bundlers como Vite, construidos sobre él, funcionan para ver cómo pueden acelerar nuestros flujos de trabajo de desarrollo.
Comprendiendo la Resolución de Paquetes en Node.js
Node Congress 2024Node Congress 2024
11 min
Comprendiendo la Resolución de Paquetes en Node.js
Cada vez que importamos o requerimos un paquete, seguimos un conjunto de reglas para resolver el paquete. Esta charla cubrirá las diferentes formas en que Node.js resuelve los paquetes y cómo depurar cuando las cosas salen mal. También cubriremos las nuevas características en Node.js 20 que hacen que la resolución de paquetes sea más rápida y confiable.
Gestión de paquetes en Monorepos
DevOps.js Conf 2024DevOps.js Conf 2024
19 min
Gestión de paquetes en Monorepos
Hablaremos sobre algunos de los puntos problemáticos y exploraremos recetas para una gestión de paquetes efectiva en Monorepos.
Discutiremos cómo funciona la gestión de paquetes con npm, pnpm y Yarn. Además, te mostraré una nueva herramienta que es menos conocida pero mejora mucho la experiencia del desarrollador.
La Vida Secreta de los Gestores de Paquetes
Node Congress 2022Node Congress 2022
9 min
La Vida Secreta de los Gestores de Paquetes
¿Alguna vez te has preguntado qué sucede después de ejecutar npm install y vas a tomar un café? Vamos a sumergirnos en el proceso de instalación de Npm y Yarn, y cómo puedes poner este conocimiento en práctica.