No tienes acceso a esta clase

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

Publicar un paquete

13/15
Recursos

Antes de publicar el proyecto de mensajes aleatorios, debes asegurarte de que el paquete funcione correctamente.

Cómo utilizar el comando npm link

El comando sudo npm link crea un enlace simbólico para reconocer este paquete dentro del listado de NPM, sin publicarlo todavía.

Si no presenta errores, está listo para ser publicado.

Cómo simular la instalación de tu paquete

Para simular la instalación de tu paquete de manera local, identifica el directorio en el que te encuentras con el comando pwd, debe ser el mismo del proyecto.

Después, ejecuta npm install -g <ruta>, donde es la ruta del directorio de tu proyecto. Esto sirve para instalarlo de manera global.

bash $ sudo npm install -g /Users/tuUsuario/tu-paquete

De esta manera, ya puedes ejecutar el programa con el comando que creamos en "bin", random-str-msg y funcionará de forma global en el sistema.

bash $ random-str-msg Commit committed $ random-str-msg Here be Dragons

Cómo publicar un paquete en NPM

Una vez revisado que el paquete funcione correctamente, debes asegurarte de cumplir con los siguientes requisitos: * Asegurar que el programa funcione reduciendo en lo posible los bugs * Revisar que la configuración del archivo package.json sea correcta * Tener un nombre único para el proyecto, usando guiones (-) para separar palabras y evitando números * Crear una cuenta en NPM, ya que aquí estarán tus paquetes a tu nombre. Después, debes utilizar el comando npm adduser para iniciar sesión en la terminal. Llena los datos, si no aparece tu contraseña, no te preocupes, es una forma de seguridad.

Una vez hayas cumplido los requisitos, ejecuta el comando npm publish y si no existen errores, tu paquete será publicado.

Validar con qué usuario publicar un paquete en NPM

Para validar el usuario con el que publicarás un paquete en NPM, debes utilizar el comando npm whoami para visualizar el usuario actual, esto es importante si tienes varias cuentas de NPM.

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

Aportes 36

Preguntas 9

Ordenar por:

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

Para los que estén un poco confundidos con los comandos, como yo jejeje, el comando de “agregar usuario” es:

npm adduser

el “adduser” va pegado, aunque en la pantalla de la terminal del profesor aparecen separadas las letras.

Mis apuntes 🤓

Crea un enlace simbólico, para reconocer a este paquete dentro del listado de paquetes de npm, sin publicarlo todavía pero si verificar que cumple todo lo requerido:

npm link

Para probarlo se deben seguir los siguientes pasos

  1. pwd para saber exactamente donde se encuentra la ruta de nuestra dependencia.

  2. npm install g ruta-de-la-dependencia(pwd) Simulará la instalación de la dependencia en nuestro local

  3. Luego ya podemos correr nuestro programa en consola:

    random-str-msg
    

Ya verificado seguir con la creación de la cuenta y :

  • Vamos a la terminal

    npm adduser
    

    Añadimos los datos que nos pide la consola …

  • Y se publica el paquete 🙌🏻

    npm publish
    

    Se busca en npm la dependencia y se verifica que este subida !

Hice un paquete con frases de motivación de la filosofía estoica.

Para los que les salga un error parecido al siguiente:

Lo corregí simplemente poniendole comillas a la ruta:

npm install -g '/d/ESTUDIO/Platzi/desarrollo web/Curso de NPM Gestion de paquetes y Dependencias en JavaScript/npm/random-str-msg-jm'

Recuerden en Mac es:

sudo npm link

Amigos, recomendación importante para los que esten trabajando en Windows

  • Usen la terminal de GIT, eso les permitirá usar comando sde Linux

  • NO LE PONGAN NOMBRE A SUS CARPETAS CON ESPACIOS, si quieren dejar un espacios usen un guión, porque sino cuando hagan npm install g ruta no les va a funcionar.

[https://linkedin.com/in/luisenrique-chavarria-5864a4240](Sigueme en linkedIn)

Hola, gente.

Quizá algunos que desarrollamos este curso usando WSL tuvimos este problema. Aquí la solución.Espero ahorrarles las horas que me costó saber como se arreglaba.

Lo que deben hacer es instalar una versión más antigua de Node. Recomiendo en particular la versión 16.20.0 que es LTS (esa me funcionó a mí)

la instalan así:

nvm install 16.20.0

y luego la seleccionan como default con:

nvm alias default 16.20.0

Luego de esto podrán correr de nuevo el adduser y todo funcionará perfectamente

Publicar un paquete

  • npm link crea un enlace para reconocer el paquete sin publicarlo. el paquete quedará listo para ser testeado.

  • pwd comando para obtener la ruta donde se ecuentra el paquete

  • npm install g /ruta/obtenidacon/pwd así instalaremos el paquete en nuestro sistema de forma global para utilizar nuestro comando

  • random-str-msg con este comando se ejecutará el algortimo de nuestro paquete.

Crear cuenta en npm

  1. Creamos una cuenta en npm
  2. ingresamos a nuestra cuenta en consola
  • npm adduser comando para iniciar sesión

  • npm publish publicará nuestro paquete

Ahora en npm podremos validar si ya está subido nuestro paquete.

📡 Archivos del Proyecto 📡


 

Pasos 📌

 

  • • Vamos hacer el enlace del paquete, en la terminal dentro de la carpeta random-str-msg, se ejecuta:
npm link

 

  • • Vamos a copiar la ruta de la carpeta actual, para ello se copia la ruta después de ejecutar:
pwd

 

  • • Vamos hacer una simulación de la instalación del paquete, se ejecuta:
npm install g /ruta-del-proyecto/random-str-msg

 

  • • Si no muestra vulnerabilidad, se ejecuta el comando del paquete:
random-str-msg

 

  • • Para que funcione debe haber hecho primero: npm link.
     
  • • Cada vez que se ejecute random-str-msg imprime un mensaje aleatorio del array del index.js.
     
  • • Para publicar el paquete en la página de npm (enlace: aquí), se crea una cuenta en Sign up, se llenan los campos solicitados como Username, Emaill address, Password.
     
  • • Iniciar sesión en la página, luego en la terminal ejecutando el comando:
npm adduser

 

  • • Piden las credenciales para acceder a la cuenta que se creó en la página de npm.
     
  • • Para publicar el paquete se ejecuta:
npm publish

 

  • • Pide un código OPT que está asociado a la configuración de seguridad de la página npm.
     
  • • Vamos al dashboard de la página de npm y buscamos en el menú derecho desplegable y seleccionamos “Package”, sale una lista de los paquetes que se ha publicado, en este caso: random-str-msg
     

Para las personas que al utilizar el comando

npm adduser

Y les devuelve un mensaje con un link, similar a este

root@J:/home/npm/random-words-msg# npm adduser
npm notice Log in on https://registry.npmjs.org/
Create your account at:
https://www.npmjs.com/login?next=/login/cli/636efcd1-xxxx-xxxx-xxxx-c925d9aa068b
Press ENTER to open in the browser...

Deben copiar el link que les devuelve la pagina y loguearse al portal de NPM, les pedira su codigo OTP y despues de eso les saldra el mensaje de:

Logged in on https://registry.npmjs.org/.

Ya estando ahi pueden publicar su paquete con

npm publish
La verdad que está muy bueno el curso, y me encanta que podamos hacer nuestros propios paquetes y modificarlos a nuestro gusto. En mi caso investigué un poco y pude cambiarle a un color preferido y también modiqué las frases a frases motivaciones para developers. Además agregué el comando al .zshrc (ya que uso zsh) para que apenas abra la terminal me salga un mensaje motivacional 😃. ![](https://static.platzi.com/media/user_upload/Screenshot%202024-08-31%20231556-a67935bf-aecf-4e99-94d3-73c0809d1380.jpg) ```js const messages = [ "You got to lose to know how to win", "Code like a boss", "Embrace the bugs, they make you stronger", "Keep calm and code on", "Success is not final, failure is not fatal: It is the courage to continue that counts", "The best error message is the one that never shows up", "Stay curious, keep learning", "Don't be afraid to refactor", "The only way to do great work is to love what you do", "Think twice, code once", "The biggest room in the world is the room for improvement", "Believe you can and you're halfway there", "Success is not the key to happiness. Happiness is the key to success. If you love what you are doing, you will be successful", "Hardships often prepare ordinary people for an extraordinary destiny", "Your limitation it's only your imagination", "The harder you work for something, the greater you'll feel when you achieve it", "Success is not in what you have, but who you are", "Your time is limited, don't waste it living someone else's life", "Believe in yourself and all that you are. Know that there is something inside you that is greater than any obstacle", "Success is not the absence of failure; it's the persistence through failure", "Your future is created by what you do today, not tomorrow", "Success is not just about making money. It's about making a difference", "Every day is a new beginning. Take a deep breath, smile, and start again", ]; const colors = { reset: "\x1b[0m", bright: "\x1b[1m", dim: "\x1b[2m", underscore: "\x1b[4m", blink: "\x1b[5m", reverse: "\x1b[7m", hidden: "\x1b[8m", fg: { black: "\x1b[30m", red: "\x1b[31m", green: "\x1b[32m", yellow: "\x1b[33m", blue: "\x1b[34m", magenta: "\x1b[35m", cyan: "\x1b[36m", white: "\x1b[37m", crimson: "\x1b[38m" // Scarlet }, bg: { black: "\x1b[40m", red: "\x1b[41m", green: "\x1b[42m", yellow: "\x1b[43m", blue: "\x1b[44m", magenta: "\x1b[45m", cyan: "\x1b[46m", white: "\x1b[47m", crimson: "\x1b[48m" } }; const motivationalMessage = () => { const message = messages[Math.floor(Math.random() * messages.length)]; console.log(`${colors.fg.green}${colors.blink}${message}${colors.reset}`); }; module.exports = { motivationalMessage, }; ``` Repo: <https://github.com/jdrodriguez2707/random-motivational-msgs>

La primera linea que se pone en ./bin/global.js
es para poder ejecutarla con node, sino aparece un error.

	#!/usr/bin/env node

si les da un error posiblemente es porque ya existe una librería con un nombre similar, por lo que seria cambiar el name de package.json por el usuario de npm de esta forma
-> “name”: “@user/nombre-de-la-libreria”. y ejecutar npm
publish --access=public

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

Para agregar usuario en la consola ejecutar el comando:

  • npm adduser
    • Copiar y pegar el link en tu buscador favorito.
    • Abrimos nuestro correo para obtener el código OTP
    • Ir al buscador donde pegamos el link e ingresamos el código OTP
  • npm publish -> Publicar y verificar
npm publish

Si tenemos un método de autenticación diferente como escanear el QR debemos ir a la URL para obtener el OTP

Buenas tardes, comunidad ya tengo mi cuenta en NPM pero no la puedo enlazar con mi terminal, me aparece lo siguiente:


alguien me puede ayudar

Hola, he hecho este curso solo con la CLI de git bash y cuando publicaba el paquete me salia un error, me pedia que me debia loguear y lo hice mil veces y no sirvio, entonces lo que hice fue usar la terminal de windows y colocar los comandos tal cual el profesor pero desde el cmd de windows y cuando te logueas la terminal se pausa y abre la ventana del navegador para el login y despues continua, cosa que git bash no puede realizar y la accion se interrumpe. ENTONCES USEN O WSL O SI VAN A PUBLICAR EL PAQUETE HAGANLO CON LA TERMINAL DE WINDOWS.
no puedo crear una cuenta en NPM dice "We are unable to verify your captcha. Please try again or check our troubleshooting guide" ya intente como 99 no joke y ya vi la guia nada me sirvio
Esta clase es como ver el paraiso en el desierto. Siempre tenia la inquietud de cómo se creaban los paquetes... y esto me sacó de mi cápsula... Node && JS son potentes.
El comando `npm link` es una herramienta útil que te permite trabajar con paquetes npm de forma local, lo que puede ser especialmente útil durante el desarrollo. A continuación, te explico cómo funciona y cómo puedes utilizarlo: ### Uso de `npm link` 1. **Creación de un paquete local**: Primero, navega al directorio del paquete que deseas utilizar localmente y ejecuta el siguiente comando para crear un enlace global al paquete:bash Copy codenpm link Esto creará un enlace simbólico global para el paquete en el sistema local, lo que significa que cualquier proyecto npm podrá utilizar este paquete enlazado. 2. **Enlace del paquete en un proyecto**: Luego, ve al directorio de tu proyecto donde deseas utilizar el paquete enlazado y ejecuta el siguiente comando para vincular el paquete local al proyecto:bash Copy codenpm link nombre\_paquete Reemplaza "nombre\_paquete" con el nombre real del paquete que has enlazado localmente. ### Ventajas de `npm link` * **Desarrollo local**: Te permite realizar cambios en el paquete local y ver los efectos de inmediato en tu proyecto sin tener que publicar y actualizar constantemente el paquete. * **Pruebas**: Facilita la realización de pruebas en un entorno controlado antes de publicar un paquete en el registro de npm. * **Colaboración**: Puede ser útil para colaborar en el desarrollo de paquetes, ya que los cambios locales se reflejarán automáticamente en los proyectos que utilizan el paquete enlazado.
La primera vez que corrí el proyecto, me salió excelente y le hice un par de modificaciones: <https://github.com/dr1602/rando-str-msg-dr#readme> Después rehice el proyecto para que fuera diferente, y todo bien hasta que tuve que ingresar el comando npm link, en el directorio de proyecto (en este caso: npm/crea-clave): ya que ahora me marca el siguiente error: npm link npm ERR! Invalid file: URL, must be absolute if // present npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\DELL\AppData\Local\npm-cache\\\_logs\2024-01-31T20\_09\_47\_441Z-debug-0.log ¿Alguien me puede ayudar? Este es el repo <https://github.com/dr1602/crea-clave#readme> Muchas gracias.

Esa terminal del profe como que está media loca. 😅 El comando que quiso ejecutar el profe en el minuto 1:43, es npm install -g ruta-del-paquete y la consola supuestamente ejecutó el nnpm install g ruta-del-paquete y como quiera funcionó. En esta clase anterior, en el minuto 3:40, pasó algo similar. 😅 Bastante curioso y raro; ¿Noh?

Al parecer el adduser se actualizo y ya no pide credenciales en el momento que ejecutas el comando, lo que tienen que hacer es copiar en su navegador el enlace que aparece luego del:

"Create your account at:"

Y listo, les pedira una comprobacion en el navegador y ya quedaran loggeados desde la terminal.

Hola a todos, vengo a hacer una aportación sobre como solucioné el siguiente error: 'random-strin-msg: command not found', antes de ello pondré un poco de contexto; en este caso yo estoy utilizando la terminal desde MacOs Ventura, el error se debió a que mi terminal no podía localizar el paquete a pesar de estar previamente instalado globalmente. El error indicaba problemas con una configuración incorrecta de la variable PATH. **SOLUCIÓN:** **1. Verificar la variable PATH:** La variable PATH indica al sistema donde buscar archivos ejecutables. **2. Editar la Configuración del Perfil de Shell:** * Para que el cambio sea permanente y garantizar que el directorio de paquetes npm globales esté siempre en tu PATH, debes editar el archivo de configuración del perfil de tu shell. * En macOS, es probable que estés utilizando el shell Zsh, por lo que debes editar el archivo .zshrc. * Utiliza el editor de texto nano para abrir el archivo .zshrc ejecutando **nano ~/.zshrc** en la terminal. **3. Agregar la Configuración del PATH:** * Dentro del archivo .zshrc, debes agregar la línea export PATH para agregar el directorio de tus paquetes npm globales al PATH: **export PATH=$PATH:/Users/carlos/.npm-global/bin** 4\. **Guardar los Cambios:** * Para guardar los cambios en nano, presiona Ctrl + O, luego presiona Enter. Después de eso, presiona Ctrl + X para salir de nano. (RECUERDA AUNQUE ESTES EN MAC ES Ctrl NO confundir con Command!) Espero a alguien le sea de utilidad, excelente día!

Actualmente, debes poner el OTP cuando vayas a ejecutar el comando, de esta manera:

npm publish --otp=code De esta forma podrás publicar tu paquete.

compañeros en caso de que les aparesca un error parecido a este

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/random-str-msg - You do not have permission to publish "random-str-msg". Are you logged in as the correct user?
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

en mi caso lo resolví cambiando el nombre del paquete o bueno del proyecto, cambien el nombre en git hub ademas le canmbie la url del archivo pakage del proyecto y hay adentro le cambian el nombre tambien donde dice "name "hay tambien se lo cambian

Si están en Windows con WSL
.
Tienen que cambiar el símbolo \ por /
Por Ej:

👉🏽 pwd
/c/Users/Francisco/Desktop/Cursos/Carpeta_Principal_Programacion/8_Todointerconectado/npm/random-str-msg-fnc


👉🏽 npm install g C:/Users/Francisco/Desktop/Cursos/Carpeta_Principal_Programacion/8_Todointerconectado/npm/random-str-msg-fnc

Captura 👇🏽
.

Si a la hora de ejecutar npm install -g junto a la ruta donde se encuentra el archivo, les sale un error.
Asegúrense de que los nombres de sus carpetas no contengan espaciados

–> Ejemplo:
Si en su ruta ustedes tienen una carpeta que se llama “proyectos de programacion” deberán cámbienle el nombre a la carpeta eliminando los espacios “proyectosDeProgramacion”

(Es probable que tengan que cerrar visual studio code para poder cambiarle el nombre).

en adduser solo me muestra links, como podria solucionar eso ?

[alternativo si no logea con [add user] / npm login ]
[usando BITBUKET]
Package.json

1-luego de crea el usuario NPM autenticamos con las credenciales creadas en la consola
@virtual-machine:~/Documentos/npm/random-str_msg-fly$ npm login
npm notice Log in on --whttps://registry.npmjs.org/
Login at:
–whttps://www.npmjs.com/login?next=/login/cli/xxxxxxxxxxxxxxxxxxxxxx
Press ENTER to open in the browser…
Username: xx
Password: xx
This operation requires a one-time password.
Enter OTP: xx
Logged in on -whttps://registry.npmjs.org/.
2-luego publicamo en npm
@virtual-machine:~/Documentos/npm/random-str_msg-fly$ npm publish
npm notice
npm notice 📦 [email protected]
npm notice === Tarball Contents ===
npm notice 565B -README.md
npm notice 83B bin/global.js
npm notice 690B package.json
npm notice 695B src/index.js
npm notice === Tarball Details ===
npm notice name: random-str_msg-fly
npm notice version: 1.0.0
npm notice filename: random-str_msg-fly-1.0.0.tgz
npm notice package size: 1.2 kB
npm notice unpacked size: 2.0 kB
npm notice shasum: 28d8663c3f586b17ce3e6bf155efd4fd406a10ee
npm notice integrity: sha512-kjwEjmqCC8p78[…]q4rGnSRBiKCgA==
npm notice total files: 4
npm notice
npm notice Publishing to -whttps://registry.npmjs.org/ with tag latest and default access
+ [email protected]

— quda asi

Aquí mis notas:

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.

Un código OTP (One-Time Password) es un código de autenticación de un solo uso que se utiliza para autenticar un usuario en una aplicación o servicio. Como su nombre indica, un código OTP solo se puede utilizar una vez y es válido por un tiempo limitado.
.
El objetivo de un código OTP es proporcionar una capa adicional de seguridad en el proceso de autenticación de un usuario. En lugar de simplemente ingresar un nombre de usuario y una contraseña, el usuario también debe proporcionar un código OTP para completar el proceso de autenticación. El código OTP se genera a menudo por una aplicación en el dispositivo del usuario o se envía por mensaje de texto o correo electrónico.
.
Al utilizar un código OTP, se reduce el riesgo de que un atacante pueda obtener acceso no autorizado a una cuenta, incluso si han obtenido o robado la información de inicio de sesión del usuario.

  • Publicar un paquete

    Ahora probaremos que nuestro paquete cumple con las características y podrá publicarse sin problema:

    • npm link

      Con el comando npm link, verificaremos que no tenga vulnerabilidades y que podrá ser listado dentro de los paquetes _npm _sin problema:

  • Simulación del paquete

    • Con npm install y la ruta del proyecto, haremos una simulación del paquete para poderlo probar:
    • Con pwd obtendremos la ruta de nuestro proyecto:
  • Cuenta npm

    • Para poder publicar nuestro proyecto tenemos que tener una cuenta npm:

      Sign In

    • Posterior a crear el usuario, iniciaremos sesión en la consola, con el comando npm adduser:

    • Publicaremos nuestro paquete con npm publish:

    • Posterior, podremos verificar que nuestro paquete ha sido subido, desde la página de npm en nuestro usuario, en la sección “Packages”:

mi resultado