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.

This talk has been presented at DevOps.js Conf 2024, check out the latest edition of this JavaScript Conference.

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
pnpm is a fast and efficient package manager that gained popularity in 2021 and is used by big tech companies like Microsoft and TikTok. It has a unique isolated node module structure that prevents package conflicts and ensures each project only has access to its own dependencies. pnpm also offers superior monorepo support with its node module structure. It solves the disk space usage issue by using a content addressable storage, reducing disk space consumption. pnpm is incredibly fast due to its installation process and deterministic node module structure. It also allows file linking using hardlinks instead of symlinks.
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn is a package manager that focuses on stability, performance, and security. It offers unique features like plug and play installation, support for nonmodules, and the exec protocol. Yarn is committed to being a good citizen in the open-source community and contributes to fixing dependencies. It is part of the Node.js Loader's working group and advocates for Corepack. Yarn is still experimental but is improving its user experience and security features. Contributions are welcome, and switching to Yarn can improve performance in large projects.
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
In this Talk, the speaker discusses package resolution in Node.js, covering topics such as CommonJS, ES modules, package.json structure, and package.json loader. The Talk also touches on conditional loading and file extension resolution, module import and export, module type determination based on file extensions and package.json, module resolution strategies in Node.js, and tips for improving loading time in ESM applications.
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
React Advanced Conference 2021React Advanced Conference 2021
20 min
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
VIT is a build tool that solves the problem of slow feedback loop speed by leveraging native support for ES modules in modern browsers. It allows you to write code as native ES modules and handles the parsing and serving of modules for you. VIT supports JavaScript, CSS, SAS, React, TypeScript, and TSX out of the box. It also allows for quick migration from CRA to VIT and can be used as a middleware in an existing Node.js server to enable server-side rendering.
Gestión de paquetes en Monorepos
DevOps.js Conf 2024DevOps.js Conf 2024
19 min
Gestión de paquetes en Monorepos
This Talk discusses pain points and effective package management in monorepos, including the use of hoisted or isolated layouts and the challenges of working with peer dependencies. It introduces the tool Bit, which addresses these issues and handles dependency management and version control. Bit enables automatic installation and management of dependencies, supports multiple versions of a peer dependency, and seamlessly updates components across different environments.
La Vida Secreta de los Gestores de Paquetes
Node Congress 2022Node Congress 2022
9 min
La Vida Secreta de los Gestores de Paquetes
npm install can be a mysterious process, but understanding how package managers work is essential. NPM solved problems like large node_modules, circular dependencies, and multiple instances of the same package. Managing package versions and conflicts is crucial for consistency across projects. Alternative approaches to package management, like PNPM and Yarn2, provide insights into the hidden complexities of package managers.