No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
3 Hrs
23 Min
27 Seg

Versionado de paquetes y paquetes privados

14/15
Recursos

El versionado semántico consiste en la estructura que debemos seguir para colocar una versión a nuestro paquete.

Qué es el versionado semántico

El versionado semántico está conformado por tres valores:

  • Major: el valor que muestra la versión que contiene los cambios importantes del paquete
  • Minor: el valor que muestra la versión que contiene los cambios en funcionalidades, pero no representan un cambio significativo
  • Patch: el valor que muestra la versión que contiene cambios rápidos para solucionar problemas de seguridad o bugs

Versionado de paquetes en NPM

Símbolos ^ y ~ para actualizar las versiones minor y patch

Existen dos símbolos que acompañan al versionado sirven para actualizar las versiones minor y patch del paquete.

  • Caret (^): Permite actualizar las versiones minor y patch
  • Tilde (~): Permite actualizar las versiones patch

Por ejemplo, tenemos la versión 5.2.3:

  • Si tiene el carret ^5.2.3, actualizará la versión minor y patch, por lo que tendrás versiones como ^5.3.3, ^5.4.3, ^5.4.4, y así sucesivamente. Pero no versiones mayores a 6.0.0.
  • Si tiene la tilde ~5.2.3, actualizará la versión de patch, por lo que tendrás versiones como ~5.2.4, ~5.2.5, ~5.2.6, y así sucesivamente. Pero no versiones mayores a 5.3.0.

Buenas prácticas en el versionado de paquetes

Lo recomendable es eliminar estos símbolos y tener la versión exacta (sin símbolos) para evitar problemas de versionado, principalmente con paquetes que los mantienen pocas personas o no son fiables.

Debes manejar las actualizaciones cuando sea pertinente y asegurándote que no entrará en conflicto la nueva versión con la antigua.

Cómo realizar cambios a la versión de tu paquete de NPM

Si realizas cambios en tu código, tienes que cambiar la versión de tu paquete. Debes utilizar los siguientes comandos, según la versión que desees cambiar:

```bash

Aumenta una version path (1.0.0) -> (1.0.1)

$ npm version patch

Aumenta una version minor (1.0.0) -> (1.1.0)

$ npm version minor

Aumenta una version major (1.0.0) -> (2.0.0)

$ npm version major

Aumenta una version específica (1.0.0) -> (3.1.1)

$ npm version ```

Una vez actualizada la versión de tu paquete, puedes ejecutar nuevamente el comando npm publish para actualizarlo en los repositorios de NPM.

Paquetes privados

Para usar paquetes privados necesitas:

  • Una versión igual o superior a la 2.7.0 de NPM
  • Tener una cuenta de usuario u organización de pago

En un paquete privado de NPM, solo pueden participar el propietario y los colaboradores autorizados. De esta manera, puedes seguir construyendo el paquete con una combinación de código privado y dependencias públicas.

Actualizar tu paquete en NPM con buenas prácticas

Tu paquete debe contener toda la información posible para que el usuario puede instalarlo, utilizarlo y hasta colaborar para solucionar posibles bugs. Por ende, es necesario que tengas configurado, por lo menos, un archivo README.md y un repositorio remoto (GitHub, GitLab, etc.).

Una vez tengas estos requisitos, puedes actualizar tu paquete a una nueva versión, luego publícalo nuevamente.

Cómo crear un archivo README.md para tu paquete

Para crear un archivo README.md puedes utilizar esta estructura base y adecuarla a tu proyecto. Puedes mirar el código haciendo clic en el botón "Raw".

Contribución creada por Andrés Guano (Platzi Contributor).

Aportes 38

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Imagen de versionado semántico

👨‍💻 Comparto esta imagen sobre el versionado semántico.

Si les da errores, puede ser porque no habían instalado previamente el comando con permisos de root, por ejemplo:

sudo npm install -g random-str-msg

Con eso debería resolver lo de instalar y ya al colocar el comando:

random-str-msg

deberían aparecerle las frases que al profe le aparecen en su consola.

“Me gustaría ver tus paquetes”

Si no les funciona el up main intenten con git push

Mi primer paquete NPM 📦

Construí un paquete que recibe un texto entre comillas despues del comando y lo regresa emarcado para darle énfasis

LINK 👉 frame-text

frame-text

█▀▀▀▀▀▀▀▀▀▀▀▀█
█ FRAME TEXT █
█▄▄▄▄▄▄▄▄▄▄▄▄█

This project frames the text to give it emphasis.

Install

npm install -g frame-text

Usage

frame-text "Hello"

=>

█▀▀▀▀▀▀▀█
█ Hello █
█▄▄▄▄▄▄▄█

npm 🍆

Los paquetes son divertidos. Comandos importantes:

  • npm link
  • npm install -g /ruta/del/paquete
  • npm adduser
  • npm publish
  • npm version x.x.x

Los paquetes privados tienen costo.

⌛️ Archivos del Proyecto ⏳


 

Pasos 📌

 

  • • Se recomienda tener buen estructurado el archivo README.md para tener un mejor control de los cambios que se realizan al proyecto.
     
  • • Si cambiamos elementos del paquete, bien sea en la lógica, en los datos, etc, lo recomendable es tener varias versiones de la publicación del paquete.
     
  • • Una vez hecho un cambio, se debe actualizar a git con:
git add .
git commit -m “mensaje-del-cambio”

 

  • • Luego se hace un cambio de versión ejecutado:
up main

 

  • • Se agrega la nueva versión, por ejemplo si tenemos la versión 0.0.0 se puede actualizar a:
npm version 1.1.0

 

  • • Con git status se verifica si todo está correcto.
     
  • • Se vuelve a publicar pero con la nueva versión:
npm publish

 

  • • Se revisa en la página de npm para ver los cambios de la versión.
     

Por aquí les dejo mis notas, espero les sean útiles.

Creando un paquete con el manejador de paquetes de node, npm, node package manager.

  1. Debemos verificar si ya existe algún paquete con el nombre que hemos pensado.
  2. El nombre del paquete debe ser el mismo que le pondremos al repositorio de gh.
  3. Clonamos el repositorio.
  4. Entramos a la carpeta que traímos de gh.
  5. npm init -y.
  6. "Hacemos cambios en el package-json según creamos conveniente.
  7. Creamos una carpeta src.
  8. Dentro de src creamos el index.js.
  9. En el index colocamos el código del paquete.
  10. Creamos una nueva carpeta llamada bin.
  11. Dentro creamos un global.js, este archivo va a funcionar del lado de node,
    hará un import del module que acabamos de crear, luego ejecuta la acción que viene
    dentro.
  12. En el json agregamos un elemento llamado
    bin; {
    “nombre del paquete”: “./ubicacionFicticia”
    },
    “preferGlobal”: true
  13. Ahora en la terminal, dentro de la carpeta del proyecto corremos el comando npm link, para crear un enlace simbolico, de esta manera lo probamos y verificamos si tenemos vulnerabilidades.
  14. Probamos el paquete instalandolo simuladamente con la ruta en done está dentro de nuestro equipo de la siguiente manera, npm install -g ./rutaDelPaquete.
  15. Así podremos probarlo. Si funciona podemos publicarlo.
  16. Cabe recalcar que todo esto debe estar siendo pusheado a github obviamente.
  17. iniciamos sesion en npm desde la terminal con el comando npm adduser.
  18. ejecutamos el comando de publish.
  19. Hecho esto ya el paquete está publicado, podemos verificar en npm, en el apartado de packages.

ACTUALIZAR EL PAQUETE Y VERSIONARLO.
20. 2.0.0, el primer número representa un cambio mayor, el segundo una versión menos y el tercero un parche al reparar algún error en una versión anterior.
21. Cambiamos la lógica del index.js si así lo queremos.
22. El readme debe estar muy bien explicado, con info de qué hace el paquete, como se instala, como se llama, etc.
23. Mandamos todo a github antes de hacer cualquier cambio.
24. versionamos el paquete de la siguiente manera: npm version 1.1.0. Obviamente aquí cambiamos a la versión que toque.
25. npm publish y con esto quedaría subida la nueva versión.
26. Revisamos los cambios en npm.

Comparto mis apuntes ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.12.45-2b5a802e-6072-4e9c-b7c1-90cbaefadc2f.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.13.20-f28ea0e3-26db-407b-9eaf-04b65c1002cb.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.13.42-405ad70e-831b-4c85-bc08-607a0a56ec29.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.14.23-cb8db17d-ba10-42da-949d-8d5393d5035f.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.14.47-8505c872-444a-42af-aef4-a9c9c5ac624e.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-20%20a%20la%28s%29%2015.15.06-a97b5d49-03aa-4676-a428-f13a8aab9fd4.jpg)

El semántico (semantic versioning), es el sistema de versionado que mas se usa a nivel mundial. El mismo se representa de la siguinete manera: Nombre-del-proyecto Numero-de-versión --> Ej: NPM v 10.2.1.

El primer número de la version, representa cambios mayores, cambios muy importantes, de apariencia y todo eso. Que si estas usando la version 9.#.# de una herramienta y la misma ya esta en su version 10.#.#, podria haber muchos errores de compatibilidad si intentas manejarte de la misma manera con esta nueva actualización.

El segundo número de la version, representa cambios menores. Que si tienes la version 10.2.# de una herramienta y la misma va por la version 10.4.#, no deberias tener conflictos si intentas manejarte de la misma manera con esta nueva actualización.

El tercer número de la version, representa cambios pequeñitos. La correccion de algo que no funcionaba, la actualizacion o mejora de algun parche de seguridad, etc.

Aqui pueden visitar Mi paquete. Ha sido genial aprender como usar npm. La verdad lo venia usando pero como que adivinando, ahora tiene muchas más sentido cada cosa que hago con NPM 😄

“Así que me gustaría ver tus paquetes”

Lo malo de ser mexicano y sentir que todo lo que te dicen es un albur xD

Hola, cree este paquete, que es muy similar al del profe, solo que lanza frases motivacionales cuando estes en atascos o resolviendo bugs <https://www.npmjs.com/package/manzo-paquete> \## Install ```shnpm install -g manzo-paquete```
**VERSIONADO DE PAQUETES** *El **versionado** de **paquetes** es una **práctica** **esencial** en la **gestión** de **proyectos** de **software**, que permite a los **desarrolladores** **rastrear** y **controlar** las **diferentes** **etapas** de **evolución** de un **paquete**. **Cada** **versión** de un **paquete** se **identifica** con un **número** **único** que **refleja** el **estado** y los **cambios** **realizados** en **comparación** con **versiones** **anteriores**. Este **sistema** de **versionado** **proporciona** **claridad** y **previsibilidad**, **ayudando** a **evitar** **conflictos** y **problemas** de **compatibilidad** al **integrar** **dependencias** en un **proyecto**. **Utilizar** un **esquema** de **versionado** bien **definido**, como el **versionado** **semántico**, **facilita** la **comunicación** **entre** los **desarrolladores** y **asegura** que las **actualizaciones** de **paquetes** se **realicen** de manera **controlada** y **segura**. En resumen, el **versionado** de **paquetes** es una **herramienta** **clave** para **mantener** la **integridad**, **estabilidad** y **evolución** **coherente** de los **proyectos** de **software**.*
<https://hackernoon.com/es/c%C3%B3mo-crear-y-publicar-su-primer-paquete-npm-privado>
npm version 2.1.0 npm WARN version This is a Git checkout, but the git command was not found. npm could not create a Git tag for this release! v2.1.0

Mi paquete de npm:
gatfun

Excelente!

Yo hice un paquete que te cuenta historias cortas de terror 💀, selecione las mejores, chenlo está chido jaja 😄

Así se installa

npm i horror-stories

Así se ejecuta

tell-me

Aquí está el link de npm

Cuando añadimos el siguiente código:

//  https://github.com/userName/namePaquete#readme

 "homepage": "https://github.com/Todointerconectado/random-str-msg-fnc#readme",
  "bin": {
    // "namePaquete": "./bin/global.js"
    "random-str-msg-fnc": "./bin/global.js"
  },
  "preferGlobal": true,
  "dependencies": {
    "g": "^2.0.1",
    "random-str-msg-fnc": "^1.1.1"
  }

Ten en cuenta tu nombre de usuario de github y el nombre que le diste al paquete.

![](

Les comparto mi primer paquete Aquí npm según el ejercicio del curso. Obviamente modifiqué y ahora muestra refranes en castellano de manera aleatoria. ¡Excelente curso!

https://www.npmjs.com/package/random-msg-message

En mi caso cree un paquete que permite crear cuentas de ethereum EIP55 compatibles, trabajado globalmente me las genera de forma aleatoria pero importando las funciones extras que cree me permiten importar desde la clave privada o generar wallets deterministicas usando un usuario y un password. Dejo para más adelante para implementar el bip39 y bip32. Acá les dejo el npm: https://www.npmjs.com/package/cryptocris_ethereum_wallet

Les recomiendo Verdaccio para crear sus paquetes privados de manera gratuita. Recién lo utilicé, es sencillo y poderoso 💪

Hola

Acá les dejo un package que permite convertir la collection de Postman a un archivo Markdown.

postman-to-markdown

Dejo mi paquete que esta diseñado para entregar citas de libros aleatoriamente.
https://www.npmjs.com/package/random-str-quote

Hice que ChatGPT me generara 500 frases aleatorias en la estructura que estaba en el condigo aquí el repo

https://github.com/lightningcode-d/random-str-msg-d

Descargen mi paquete de npm:

npm i randname-ag

El poder compartir paquetes que uno crea es algo genial, pero dentro de NPM existen muchos muy utiles para el desarrollo de cada dia.
Entre algunos de estos:

  • Cambio imagenes a Webp
  • Cambio de imagenes a Avif
    Entre otros, esto con ayuda de algo que se llama gulp

Excelente clase!
Me siento que tengo el conocimiento de todo un profesional

Publiqué un paquete en el cual te genera frases inspiradoras con diferente color de fuente y diferente fondo cada que se ejecuta el comando.

Aquí la pagina del paquete en npmjs (https://www.npmjs.com/package/random-quote-colors)
Aquí el link del repositorio en Github (https://github.com/cristhian420/random-quote-colors)

Al momento de instalar el paquete de manera local con npm link, me genero un problema el cual no reconocía el script en la consola.

$ random-quote-colors
zsh: permission denied: random-quote-colors
$ sudo random-quote-colors
Password:
sudo: random-quote-colors: command not found

Usando el comando para desinstalar el paquete

$ npm uninstall random-quote-colors 

Simplemente me aparecía el proceso pero seguía apareciendo en la lista de paquetes instalados, por lo que elimine desde la carpeta

/usr/local/lib/node_modules

De esta manera pude reinstalar el paquete de manera local, correr las pruebas y publicarlo en npmjs.

Les dejo mi paquete hecho con frases motivacionales.

https://www.npmjs.com/package/random-show-msg