No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

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 39

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

por 茅tica moral no publiqu茅 el paquete. XD

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.

鈥淢e gustar铆a ver tus paquetes鈥

Publiqu茅 un paquete que retorta e imprime en consola un objeto con la siguiente estructuta:
{
Departamento:鈥楢mazonas鈥,
Capital:鈥楲eticia鈥
}
Esto de forma aleatoria con los 32, es el primero que publico 馃檲.
npm i random-departmentsofcolombia
https://www.npmjs.com/package/random-departmentsofcolombia

Si no les funciona el up main intenten con git push

Ac谩 馃憠 mi primer paquete publicado en el listado de npm 馃摝馃榾馃捇

Me gust贸 mucho este curso y la forma de explicar de gndx!!!

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 馃崋

鈱涳笍 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 鈥渕ensaje-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.

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.

Hace tiempo cree un router client-side para JavaScript vanilla con soporte para JS y TS, la cantidad m谩xima de descargas que alcanz贸 fueron 274 por semana.

El paquete se llama yourrouter y la documentaci贸n oficial est谩 en ingl茅s. Se los dejo aqu铆 por si quieren echarle un ojo.

Cualquier aporte o bug lo pueden reportar para corregirlo:)

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 馃槃

鈥淎s铆 que me gustar铆a ver tus paquetes鈥

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

<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

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.

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

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; {
    鈥渘ombre del paquete鈥: 鈥./ubicacionFicticia鈥
    },
    鈥減referGlobal鈥: 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.

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 馃挭

馃憠 Mi paquete

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