Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes: $349
$259
Currency
Antes: $349
Ahorras: $90
COMIENZA AHORA
Termina en: 13D : 8H : 9M : 16S

Debes iniciar sesión

Para ver esta clase crea una cuenta sin costo o inicia sesión

Instalación de dependencias5/15

Evita tener que hacer sudo cuando hagas un
npm i -g

Con estos tips del equipo de NPM 👉
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

Demonio: Servicio que corre en segundo plano en el sistema

No había entendido del todo la parte de las dependencias opcionales. Investigué un poco y tiene todo el sentido del mundo.
.
Son las dependencias que aportan algo extra al proyecto pero que no son necesarias para que el proyecto funcione. Por lo que si su instalación falla por cualquier motivo el proyecto es totalmente funcional.
.
Un ejemplo de esto es si quieres decorar los logs en la consola, puedes agregar un paquete como chalk que te ayudará a lograrlo. El proyecto va a funcionar igual asi los logs no estén decorados, por lo que este sería un paquete opcional.

sudo: superuser do

  • –save : Este documento que vas a instalar dentro del proyecto es necesario para vivir en producción. Hay que tener cuidado con los paquetes que instalamos, cuando es a producción y cuando no lo es.

  • –save-dev: Este documento que vamos a instalar solo es necesario en nuestro entorno local o en el de desarrollo. Es importante no mandar dependencias a producción ni omitir algunas que deban de estar en producción.

Listar paquetes instalados de forma global

npm list -g --depth 0

Comparto este artículo que explica la diferencia entre los tipos de dependencias para los que quieran profundizar o repasar:

Different types of dependencies in a Node.js application explained

Recomendación para los que están en linux (ubuntu).
No es recomendable realizar el comando “sudo npm install -g nodemon” al instalar un paquete pues comprometemos la seguridad de nuestro sistema. Para eso podemos realizar estos dos comandos:

npm config set prefix "/usr/local"
sudo chown -R $USER /usr/local

El primer comando le dice a npm que no utilize “/usr/lib/node_modules/” sino que redireccione las instalaciones a la carpeta “/usr/local”. El segundo comando añade al usuario actual como dueño de la carpeta “usr/local” para que así tengas control total sobre los archivos. Con eso hemos solucionado el problema de las instalaciones globales de npm.

Existen otras formas de solucionarlo como por ejemplo ejecutar la instalación como root o añadir el parámetro --no-bin-links al comando npm, pero no son seguros estos métodos.

fuentes:
http://stackoverflow.com/questions/13527889/global-installation-of-grunt-js-fails
http://howtonode.org/introduction-to-npm

  • Carpeta node_modules: Aquí es donde se van a instalar los módulos que tú estás agregando a tu proyecto. Esta carpeta es importante para que tu proyecto funcione, pero no debe de ser enviada a ningún repositorio y debemos ignorarla apenas se crea.
    Para ignorarla se crea un archivo .gitignore y escribimos: node_modules/

Versión resumida para instalar:

npm i date-nfs -D

💻 Mi comando preferido para instalar dependencias en DEV:

npm i -D moment

Entendí mal o dijo realmente que nodemon es un paquete que nos permite generar un “demonio” jajaja

SHORTCUTS
i = install
-S = --save
-D = --save-dev

Comando para revisar los packages instalados de forma global: npm list -g --depth 0

En qué carpeta dentro de Ubuntu se guardan las dependencias globales?

Si alguien tiene el problema de que al instalar paquetes globales el comando no está disponible, ejemplo: nodemon not found
les recomiendo que borren la carpeta C:/Users/{username}/AppData/Roaming/npm
y después la carpeta
C:/Users/{username}/AppData/Roaming/npm-cache
después de esto instalen cualquier paquete de forma global para que NPM vuelva a instalar estas carpetas, esto debería solventar el error, me funcionó en WSL me costó mucho encontrar la solución

Ahora conocemos la forma adecuada para añadir dependencias a través de este medio. Por cierto, con nodemon tuve problemas para agregarlo en Windows pero al final pude lograrlo con este comando:

npm install -g --force nodemon

No entendí bien, ¿por qué debemos excluir la carpeta “node_modules” del repositorio?

Instalación de dependencias

Creamos la carpeta src y dentro de ella creamos el archivo index.js

mkdir src
cd src
touch index.js

Cuando instalamos una dependencia lo hacemos con el siguiente comando. El ejemplo es con una libreria de fechas llamada moment.

El siguiente comando es un estandar para la instalacion de paquetes.

npm install moment --save

Flags :

      • save : significa que la dependencia va a ser utlizada en prod.
    • -save -dev : este paquete solo es necesario para nuestro entorno local.

Al instalar el paquete, se crea:

  • Carpeta node_modules : donde estaran nuestro paquetes. Esta carpeta no debe ser llevada a produccion y debemos incluirla en el archivo .gitignore
  • package_lock.json
<h3>Creando dependencia de desarrollo</h3>
npm install date-fns --save-dev 
#Shortcut
#npm i date-fns -D
#npm i moment -S 
<h3>Paquetes de forma global</h3>
sudo npm install -g nodemon
<h3>Ver paquetes instalados de forma global</h3>
npm list -g --depth 0
<h3>Instalar paquetes opcionales</h3>
npm install eslint -O

Las dependencias de desarrollo son esos modulos que son solo usados para construir nuestro proyecto, pero no para ejecutarlo. Cosas como Babel o Webpack se usan para construir el projecto, no para su ejecución. MIentras las dependencias normales son modulos que son requeridos en ejecución

Como puedo desinstalar un paquete global? o en general un paquete

Genial, aunque aun no comprendo muy bien la diferencia enter --save y --save-dev, es decir, cuando subo mi proyecto a producción y coroo el comando npm install, como quiera las dependencias de desarrollador también se instalan…

Hasta ahora me acabo de dar cuenta que el parametro “-g” significa global 😂

Se que esta pregunta debe tener una respuesta muy amplia y particular para cada caso, pero ¿como saber si debo mandar dependencias a producción o no?

Mi way preferido de instalar dependencias
Dependencias en prod. no especifico el --save
npm install moment

Para DevDependencies shorcut:
npm install morgan -D

También se puede usar NPX para no instalar módulos globalmente:
npm install nodemon -D
npx nodemon

npm install === npm i

npm i [nombre_del_paquete] --save === npm i [nombre_del_paquete] -S

npm i [nombre_del_paquete] --save-dev === npm i [nombre_del_paquete] -D

–save => Necesario para producción
–save-dev => Solo para nuestro entorno de desarrollo

Listar paquetes que tengo globalmente => npm list -g --depth 0

🟢npm install moment --save : Paquete que se encarga de manejar las fechas en JavaScript
🟢 --save : El documento que vamos a instalar dentro del proyecto es necesario para vivir en produccion.
🟢 -dev : El documento que vamos a instalar solo es necesario en nuestro entorno local o en el entorno de desarrollo
🟢 npm install date-fns : Al igual que moment se engarga de manejar fechas y datos
🟢 npm i : abreviacion de nmp install

🟢 -D : abreviacion para --save-dev

Nuevo Personaje de Digimon: ++NODEMON ++

digimon-1905689.jpg

IMPORTANTE

  • –save = El documento es necesario para producción.
  • –save-dev = Requerido solo en el entorno local

Tal vez no usaremos todos los paquetes cuando hagamos un proyecto, pero entende que existen nos va a ayudar a tener contexto de como trabajar con los proyectos.

En nuestro proyecto necesitamos la carpeta “src” que es donde tendremos todos nuestros archivos. Aqui consumiremos nuestros recursos.

En la raiz de nuestro proyecto es donde instalaremos las dependencias. Son recursos que utilizaremos dentro de nuestros proyectos.

Cuando instalamos usualmente utilizamos (este paquete se encarga de manejar las fechas en JS).

npm install moment

de esta forma podemos instalarlo como una dependecia requerida para el proyecto. Pero podemos asignarle un flag “—save” esta significa que esta dependencia es necesario para vivir en produccion, hay que tener cuidado de cuando un paquete es a produccion o no.

Tenemos tambien la flag “—save-dev” nos permite establecer que esta dependencia solo es necesario en nuestro entorno local o de desarrolo.

Ya que instalamos la dependencia, se crea la carpeta “node_modules” y un archivo

“package-lock.json”.

En la carpeta node_modules se instalaran los modulos que instalaremos al proyecto. No debe de ser enviada a ningun repositorio apenas se crea. Esto lo hacemos con .gitignore →node_modules/

En el package.json se agrega la dependencia asignada.

Otros flags que podemos utilizar es ‘i’ que es de Install y el -D que es ‘—save-de’. Tambien -S que hace que se instale como parte del proyecto.

En ocaciones necesitaremos un paquete global, cuando trabajamos en un proyecto podemos instalar el paquete que sera utilizado en el contexto del proyecto, pero no esta disponible para otros si no esta instalado. Uno de los principales proyectos que instalamos de forma global , se llama NODEMON, es un demonio( Servicio que corre en segundo plano en el sistema) que se encargara de estar siempre ecuchando algun valor y va a dejar en nuestro valor algun comando que estemos ejecutando de NODE. Por eso este es global y para eso ocupamos un flag.Como

npm install -g nodemon

Este tipo de paquetes necesitan permisos. Para saber que tenemos este paquete podemos usar:

npm list -g --depth 0

De esta forma tendremos la lista de los paquetes que tenemos instalado de forma global y los recursos que tenemos disponibles.

Tambien podemos instalar paquetes opcionales, esto lo hacemos con la flag -O

npm install eslint -O

Hay tipos de paquetes pide financiamiento, donde podemos ver los datos de los desarrolladores y como podemos apoyarlos, para saberlo usamos:

npm fund

Para instalar un paquete en nuestro proyecto, simplemente debemos utilizar el comando npm install, situados en la carpeta de nuestro proyecto. Esto instalará dicho paquete y todas sus dependencias en la carpeta node_modules/, a la vez que actualiza el fichero package.json añadiendo el paquete y su versión como una dependencia del proyecto.

Existen varias formas de instalar un paquete:

npm install -D o --save-dev : Instala el paquete en el proyecto, como dependencia de desarrollo. Son aquellos paquetes que necesitamos en un proyecto mientras estamos desarrollándolo, pero una vez tenemos el código generado del proyecto, no vuelven a hacer falta. Los paquetes instalados en esta modalidad, se guardán en la sección devDependences del fichero package.json

npm install o --save-prod : Instala el paquete en el proyecto, como dependencia de producción. Son aquellos paquetes que necesitamos tener en la web final generada, como librerías Javascript necesarias para su funcionamiento o paquetes similares. Los paquetes instalados con el flag --save-prod, -P o directamente sin ningún flag se instalan en esta modalidad, guardándolos en la sección dependences del fichero package.json.

npm install -g o --global : Instala el paquete en el sistema, sin asociarlo al proyecto.

Les anexo la pagina donde saque la informacion

npm install -g name-package 
/*Instala los paquetes que queremos de forma global*/
npm install name-package --save 
/*Instala los paquetes que se necesitan en producción*/

npm install name-package --save-dev
/*Instala los paquetes que se necesitan solo en el entorno de desarrollo*/

jajaja un DEMONIO 👿

Llamen a un exorcista porfavor mi pc se endemonio

Use of --save-dev

<h1>Instalacion de dependencias</h1>
npm i moment -S //package para produccion --save
npm i nodemon -D //package solo para desarrollo --save-dev
npm i nodemon -g //package de manera --global 

//hay algunos packages que tienen partes que es necesario donar para usarlas
npm i eslint -D //eslint se puede usar parcialmente
npm fund //de esta manera vemos como podemos donar

npm list -g --depth 0 //lista de los packages globales

//crea el .gitignore y agrega escrito node_modules

Creo que voy a incluir en mis dependencias globales a funny-commit para cuando este poco creativo para los mensajes. Gracias Oscar.

Sigamos!

Listar recursos Globales, importante

Alguien me puede ayudar 😦 utilizo hyper de terminal con zsh en windows y no se como puedo instalar el nodemon global, no se como pueda poner la contraseña que me pide después de ejecutar el comando “sudo npm install -g nodemon”, me imaginé que era la del usuario administrador pero no funcionó

Si quieren utilizar diferentes versiones de Node y poder instalar paquetes sin necesidad de otorgar permisos pueden usar nvm

Aprendí muchas cosas. Gracias. Resolví muchas dudas.

npm list -g --depth 0```

nodemon es una herramienta que ayuda a desarrollar aplicaciones basadas en node.js al reiniciar automáticamente la aplicación de nodo cuando se detectan cambios en el directorio.

Ver los paquetes que estan instalados de forma global

npm list -g —depth 0

Si están en Linux puede que al instalar dependencias globales deban usar sudo para hacerlo, algunos directorios requieren permisos especiales de escritura.

sudo npm i -g nodemon

Los paquetes opcionales donde quedan instalados?

–save ó -S => instala los paquetes como dependencia de producción; es decir, que nuestro proyecto siempre lo va a requerir.
–save-dev ó -D => instala los paquetes como dependencia de desarrollo; es decir, solo es necesario para nuestro entorno

-g => instala los paquetes de npm de manera global.
npm list -g --depth 0 => Nos muestra los paquetes que tenemos instalados de forma global

donde quedan instalados los paquetes globales?

Con la teminal de Cmder que recomendaron en clases anteriores, puedes trabajar con los comandos del sistema Unix.
Además, en el repositorio del mismo, encuentras el paso a paso para poder darle permisos de administrador por defecto y no tener problemas a la hora de instalar dependencias globales! 😄

excelente clase, muchas gracias 🚀

Les recomiendo esta lectura para repasar y entender mucho más sobre NPM https://blog.codota.com/a-comprehensive-beginners-guide-to-npm/

Usando este comando nos lista los paquetes junto a sus dependencias y de donde vienen
npm ls -gl

este curso me está gustando mucho 😄

Entendido y aplicado

entiendo, pero me surgen muchas preguntas. si la carpeta node_modules no se sube a ningún repositorio ni se envía a producción, ¿como envió las dependencias que si son necesarias a producción?.

¿si npm me gestiona las dependencias en cuanto a donde se guardan y como se enlazan, al subirlo mi proyecto a producción sin node_modules. no se estaría rompiendo todo ese enlace?.

¿si no node_modules no se sube a producción de que sirven las keywords o declarar las licence o el repositorio que estas usando?

si node_modules que me permite instalar dependencias de manera global para poder ocupar en varios proyectos a la vez. al no subirse a producción como gestiono mis dependencias globales, y las enlazo a los distintos proyectos que tengo trabajando en producción?.
no seria buena practica instalar en producción, boostrap por cada proyecto que este ocupando.

Para verificar si instalaron correctamente nodemon puden hacer tambien:

where nodemon
Annotation 2020-08-05 193657.png

El output deberia ser algo asi ^^^^

Un resumen de la clase.

Dependencias: Recursos que se utilizan dentro del proyecto.
Para instalar un paquete se escribe

npm install [package_name]

–save o -S --> Indica que el paquete es necesario para producción
–save-dev o -D --> Indica que el paquete es solo para desarrollo
-g --> Indica que un paquete se instala de forma global
-O --> Indica que un paquete es opcional

Hay que tener en cuenta cuando un paquete es necesario para producción y cuando no.

node_modules no debe enviarse al repositorio.

para los que tienen problemas con EACCES permission denied y no pueden instalar una dependencia o paquete de NPM en el proyecto de otra persona y que lo tiene con permisos, es fácil solamente escriban el siguiente comando

$ sudo su

//este comando te permite entrar al super usuario de tu terminal ubuntu

luego instalas el paquete o la dependencia en la carpeta de proyecto sin necesidad de sudo ¿por qué? porque ya estas en root/administrador y puedes instalar todo lo que tu quieras y listo eso era todo amigos…

ahora para salir del super usuario solo se escribe exit y listo, te devuelve al usuario local en el que estabas, luego verificas que se haya instalado en node_modules y cuando lo encuentres instalado, ya puedes vivir feliz toda la vida jejeje

muchachos de nada y dale un like 😃 espero te haya servido.

Existe algo similar en Python es decir claro que esta PIP y virtualenv o venv pero más allá hay algo que te permita ser explícito en que usas colocar scripts y demás

Por qué necesito instalar un paquete de manera opcional? Es más qué hace una instalación opcional? Pensé que lo explicaría.

una pregunta y como se diferencia cuando es un entorno de desarrollo y uno de producción?

Esta es una recomendación del sitio oficial de npm
Tip: If you are using npm 5.2 or higher, we recommend using npx to run packages globally.

Comparto este recurso para saber sobre los comandos
que uso el profesor en la clase y su significado.

https://lenguajejs.com/npm/administracion/instalar-paquetes-npm/

Recomiendo este articulo para entender más el funcionamiento de npm

¿Cómo funciona NPM y el modelo de dependencias?

para los usuarios de windows en consola en vez de touch podemos usar type nul > tuarchivo.txt 🦾💯✨

Con Ctrl + L, pueden limpiar la terminal de una manera más rápida y sencilla.

Investigue un poco mas sobre los tipos de dependencias y estos fueron mis apuntes sobre los tipos de dependencias mas frecuentes

Dependencias de Producción:

Son las dependencias que son obligatorias para correr nuestro proyecto. Son las que estan siendo utilizadas directamente en el código. Por ejemplo: mi aplicacion trabaja con mongoDB entonces puede haber una dependencia de un paquete de node de mongoDB. Esta dependencia se queda especificada en la key “dependencies” de el archivo package.json. La aplicación no funcionara si no tiene instalada una dependencia referenciada en esta llave.

La sintaxis para instalar una dependencia de producción seria la siguiente:

npm i package_name o npm i package_name --save-prod .

Dependencias de Desarrollo:

Son aquellas dependencias que son necesarias durante el proceso de desarrollo de nuestra app. Uno de los ejemplos mas comunes es nodemon. Nodemon es una heramienta que reinicia la app cada vez que detecta cambios, ahorrándonos tiempo. Es muy útil durante el desarrollo pero no en producción ya que en esta instancia la aplicación no va a sufrir mas cambios. Estas dependencias quedan especificadas bajo la llave “devDependencies” en el package.json.

La sintaxis para instalar una dependencia de desarrollo seria la siguiente:

npm i package_name --save-dev

Dependencias Opcionales

Como su nombre lo dice, estas dependencias son opcionales, esto quieres decir que si fallan en el periodo de instalación, npm simplemente lo ignorara porque no son necesarias para el correcto funcionamiento de la app. Por ejemplo: si utilizas chalk, que es una herramienta que estiliza los logs, podemos guardarla como dependencia opcional porque no afecta el correcto funcionamiento de la app, ni afecta el desarrollo de la misma. Estas dependencias se quedan establecidas dentro de la llave “optionalDependencies” en el package.json

Para instalar una dependencia opcional se usa la siguiente sintaxis:

npm i package_name --save-optional

--save-dev is used to save the package for development purpose. --save is used to save the package required for the application to run.

La plataforma de platzi se cae cada rato los videos no reproducen adecuadamente desde hace mucho, por favor actuar.

Evita problemas de permisos instalando node version manager, como nmv o n.

Como instalar nvm

npm cheat cube.png

de que sirve instalar un paquete de forma opcional? me quedo claro lo de instalar paquetes solo para local o para estar en produccion, igual que los paquetes que son globales, pero no me quedo claro lo de instalarlos de forma opcional

Instalación de Dependencias


  1. npm install name --save Esta dependencia es necesaria para vivir en producción.
  2. npm install name --save-dev ó npm i -D name Este documento solo es necesario en el entorno local o entorno de desarrollo.
  3. npm i name -D Instalación de paquete y también establecer como dependencia de desarrollo.
  4. npm install name --save Esta dependencia es necesaria para vivir en producción
  5. /mode modules Es una carpeta que es importante para el proyecto pero no debe ser enviada a ningún repositorio y podemos ignorarlas con .gitignore.
  6. npm install -g ó npm i -g name Instalar dependencias de manera global.
  7. npm install eslint -O Optional dependency.

No debemos instalar dependencias con sudo pues podemos arriesgarnos. Configuración para instalar sin sudo.

Que buena clase, por fin entendiendo con plastilina como usar npm.

RESUMEN:

//creation of index.js
mkdir path
cd path
touch index.js

//installation
npm install package
npm install package --save wich is equivalent to npm i package -S
npm install package --save-dev wich is equivalent to npm i package -D
–> it will createa dir called node_modules and a file called package-lock.json

//install a globla package
npm i -g nodemon or npm install -g nodemon

ALERT: do not use sudo comand while execute : npm i -g
TIPS: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

//look for global installed modules
npm list -g --depth 0

//npm fund
npm fund give us a form to support the proyect.

Si en su servidor de produccion solo quieren instalar las dependencias de produccion solo deben correr este comando:

npm install --only=prod
# or
npm install --only=production

y para versiones anterios de npm 3.3.0 es:

npm install --production

Instalar paquetes:

Requeridos:

npm i <package>
# or
npm i -S <package>
# or
npm i --save <package>

de desarrollo:

npm i -D <package>
# or
npm i --save-dev <package>

Globales:

npm i -g <package>
# or
npm i --global <package>

buena practica
Despues de inicializar el repo de git git init
Creat un archivo .gitignore y usa esta pagina para saber que archivos debes ignorar para cada tecnologia que uses (node, python, linux, etc)
https://www.toptal.com/developers/gitignore

Este curso es sumamente útil, debería de incluirse en la carrera de Arquitectura Frontend, justo antes de comenzar con los Frameworks CSS.

Evita tener que hacer sudo cuando hagas un
npm i -g

Con estos tips del equipo de NPM 👉
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

Demonio: Servicio que corre en segundo plano en el sistema

No había entendido del todo la parte de las dependencias opcionales. Investigué un poco y tiene todo el sentido del mundo.
.
Son las dependencias que aportan algo extra al proyecto pero que no son necesarias para que el proyecto funcione. Por lo que si su instalación falla por cualquier motivo el proyecto es totalmente funcional.
.
Un ejemplo de esto es si quieres decorar los logs en la consola, puedes agregar un paquete como chalk que te ayudará a lograrlo. El proyecto va a funcionar igual asi los logs no estén decorados, por lo que este sería un paquete opcional.

sudo: superuser do

  • –save : Este documento que vas a instalar dentro del proyecto es necesario para vivir en producción. Hay que tener cuidado con los paquetes que instalamos, cuando es a producción y cuando no lo es.

  • –save-dev: Este documento que vamos a instalar solo es necesario en nuestro entorno local o en el de desarrollo. Es importante no mandar dependencias a producción ni omitir algunas que deban de estar en producción.

Listar paquetes instalados de forma global

npm list -g --depth 0

Comparto este artículo que explica la diferencia entre los tipos de dependencias para los que quieran profundizar o repasar:

Different types of dependencies in a Node.js application explained

Recomendación para los que están en linux (ubuntu).
No es recomendable realizar el comando “sudo npm install -g nodemon” al instalar un paquete pues comprometemos la seguridad de nuestro sistema. Para eso podemos realizar estos dos comandos:

npm config set prefix "/usr/local"
sudo chown -R $USER /usr/local

El primer comando le dice a npm que no utilize “/usr/lib/node_modules/” sino que redireccione las instalaciones a la carpeta “/usr/local”. El segundo comando añade al usuario actual como dueño de la carpeta “usr/local” para que así tengas control total sobre los archivos. Con eso hemos solucionado el problema de las instalaciones globales de npm.

Existen otras formas de solucionarlo como por ejemplo ejecutar la instalación como root o añadir el parámetro --no-bin-links al comando npm, pero no son seguros estos métodos.

fuentes:
http://stackoverflow.com/questions/13527889/global-installation-of-grunt-js-fails
http://howtonode.org/introduction-to-npm

  • Carpeta node_modules: Aquí es donde se van a instalar los módulos que tú estás agregando a tu proyecto. Esta carpeta es importante para que tu proyecto funcione, pero no debe de ser enviada a ningún repositorio y debemos ignorarla apenas se crea.
    Para ignorarla se crea un archivo .gitignore y escribimos: node_modules/

Versión resumida para instalar:

npm i date-nfs -D

💻 Mi comando preferido para instalar dependencias en DEV:

npm i -D moment

Entendí mal o dijo realmente que nodemon es un paquete que nos permite generar un “demonio” jajaja

SHORTCUTS
i = install
-S = --save
-D = --save-dev

Comando para revisar los packages instalados de forma global: npm list -g --depth 0

En qué carpeta dentro de Ubuntu se guardan las dependencias globales?

Si alguien tiene el problema de que al instalar paquetes globales el comando no está disponible, ejemplo: nodemon not found
les recomiendo que borren la carpeta C:/Users/{username}/AppData/Roaming/npm
y después la carpeta
C:/Users/{username}/AppData/Roaming/npm-cache
después de esto instalen cualquier paquete de forma global para que NPM vuelva a instalar estas carpetas, esto debería solventar el error, me funcionó en WSL me costó mucho encontrar la solución

Ahora conocemos la forma adecuada para añadir dependencias a través de este medio. Por cierto, con nodemon tuve problemas para agregarlo en Windows pero al final pude lograrlo con este comando:

npm install -g --force nodemon

No entendí bien, ¿por qué debemos excluir la carpeta “node_modules” del repositorio?

Instalación de dependencias

Creamos la carpeta src y dentro de ella creamos el archivo index.js

mkdir src
cd src
touch index.js

Cuando instalamos una dependencia lo hacemos con el siguiente comando. El ejemplo es con una libreria de fechas llamada moment.

El siguiente comando es un estandar para la instalacion de paquetes.

npm install moment --save

Flags :

      • save : significa que la dependencia va a ser utlizada en prod.
    • -save -dev : este paquete solo es necesario para nuestro entorno local.

Al instalar el paquete, se crea:

  • Carpeta node_modules : donde estaran nuestro paquetes. Esta carpeta no debe ser llevada a produccion y debemos incluirla en el archivo .gitignore
  • package_lock.json
<h3>Creando dependencia de desarrollo</h3>
npm install date-fns --save-dev 
#Shortcut
#npm i date-fns -D
#npm i moment -S 
<h3>Paquetes de forma global</h3>
sudo npm install -g nodemon
<h3>Ver paquetes instalados de forma global</h3>
npm list -g --depth 0
<h3>Instalar paquetes opcionales</h3>
npm install eslint -O

Las dependencias de desarrollo son esos modulos que son solo usados para construir nuestro proyecto, pero no para ejecutarlo. Cosas como Babel o Webpack se usan para construir el projecto, no para su ejecución. MIentras las dependencias normales son modulos que son requeridos en ejecución

Como puedo desinstalar un paquete global? o en general un paquete

Genial, aunque aun no comprendo muy bien la diferencia enter --save y --save-dev, es decir, cuando subo mi proyecto a producción y coroo el comando npm install, como quiera las dependencias de desarrollador también se instalan…

Hasta ahora me acabo de dar cuenta que el parametro “-g” significa global 😂

Se que esta pregunta debe tener una respuesta muy amplia y particular para cada caso, pero ¿como saber si debo mandar dependencias a producción o no?

Mi way preferido de instalar dependencias
Dependencias en prod. no especifico el --save
npm install moment

Para DevDependencies shorcut:
npm install morgan -D

También se puede usar NPX para no instalar módulos globalmente:
npm install nodemon -D
npx nodemon

npm install === npm i

npm i [nombre_del_paquete] --save === npm i [nombre_del_paquete] -S

npm i [nombre_del_paquete] --save-dev === npm i [nombre_del_paquete] -D

–save => Necesario para producción
–save-dev => Solo para nuestro entorno de desarrollo

Listar paquetes que tengo globalmente => npm list -g --depth 0

🟢npm install moment --save : Paquete que se encarga de manejar las fechas en JavaScript
🟢 --save : El documento que vamos a instalar dentro del proyecto es necesario para vivir en produccion.
🟢 -dev : El documento que vamos a instalar solo es necesario en nuestro entorno local o en el entorno de desarrollo
🟢 npm install date-fns : Al igual que moment se engarga de manejar fechas y datos
🟢 npm i : abreviacion de nmp install

🟢 -D : abreviacion para --save-dev

Nuevo Personaje de Digimon: ++NODEMON ++

digimon-1905689.jpg

IMPORTANTE

  • –save = El documento es necesario para producción.
  • –save-dev = Requerido solo en el entorno local

Tal vez no usaremos todos los paquetes cuando hagamos un proyecto, pero entende que existen nos va a ayudar a tener contexto de como trabajar con los proyectos.

En nuestro proyecto necesitamos la carpeta “src” que es donde tendremos todos nuestros archivos. Aqui consumiremos nuestros recursos.

En la raiz de nuestro proyecto es donde instalaremos las dependencias. Son recursos que utilizaremos dentro de nuestros proyectos.

Cuando instalamos usualmente utilizamos (este paquete se encarga de manejar las fechas en JS).

npm install moment

de esta forma podemos instalarlo como una dependecia requerida para el proyecto. Pero podemos asignarle un flag “—save” esta significa que esta dependencia es necesario para vivir en produccion, hay que tener cuidado de cuando un paquete es a produccion o no.

Tenemos tambien la flag “—save-dev” nos permite establecer que esta dependencia solo es necesario en nuestro entorno local o de desarrolo.

Ya que instalamos la dependencia, se crea la carpeta “node_modules” y un archivo

“package-lock.json”.

En la carpeta node_modules se instalaran los modulos que instalaremos al proyecto. No debe de ser enviada a ningun repositorio apenas se crea. Esto lo hacemos con .gitignore →node_modules/

En el package.json se agrega la dependencia asignada.

Otros flags que podemos utilizar es ‘i’ que es de Install y el -D que es ‘—save-de’. Tambien -S que hace que se instale como parte del proyecto.

En ocaciones necesitaremos un paquete global, cuando trabajamos en un proyecto podemos instalar el paquete que sera utilizado en el contexto del proyecto, pero no esta disponible para otros si no esta instalado. Uno de los principales proyectos que instalamos de forma global , se llama NODEMON, es un demonio( Servicio que corre en segundo plano en el sistema) que se encargara de estar siempre ecuchando algun valor y va a dejar en nuestro valor algun comando que estemos ejecutando de NODE. Por eso este es global y para eso ocupamos un flag.Como

npm install -g nodemon

Este tipo de paquetes necesitan permisos. Para saber que tenemos este paquete podemos usar:

npm list -g --depth 0

De esta forma tendremos la lista de los paquetes que tenemos instalado de forma global y los recursos que tenemos disponibles.

Tambien podemos instalar paquetes opcionales, esto lo hacemos con la flag -O

npm install eslint -O

Hay tipos de paquetes pide financiamiento, donde podemos ver los datos de los desarrolladores y como podemos apoyarlos, para saberlo usamos:

npm fund

Para instalar un paquete en nuestro proyecto, simplemente debemos utilizar el comando npm install, situados en la carpeta de nuestro proyecto. Esto instalará dicho paquete y todas sus dependencias en la carpeta node_modules/, a la vez que actualiza el fichero package.json añadiendo el paquete y su versión como una dependencia del proyecto.

Existen varias formas de instalar un paquete:

npm install -D o --save-dev : Instala el paquete en el proyecto, como dependencia de desarrollo. Son aquellos paquetes que necesitamos en un proyecto mientras estamos desarrollándolo, pero una vez tenemos el código generado del proyecto, no vuelven a hacer falta. Los paquetes instalados en esta modalidad, se guardán en la sección devDependences del fichero package.json

npm install o --save-prod : Instala el paquete en el proyecto, como dependencia de producción. Son aquellos paquetes que necesitamos tener en la web final generada, como librerías Javascript necesarias para su funcionamiento o paquetes similares. Los paquetes instalados con el flag --save-prod, -P o directamente sin ningún flag se instalan en esta modalidad, guardándolos en la sección dependences del fichero package.json.

npm install -g o --global : Instala el paquete en el sistema, sin asociarlo al proyecto.

Les anexo la pagina donde saque la informacion

npm install -g name-package 
/*Instala los paquetes que queremos de forma global*/
npm install name-package --save 
/*Instala los paquetes que se necesitan en producción*/

npm install name-package --save-dev
/*Instala los paquetes que se necesitan solo en el entorno de desarrollo*/

jajaja un DEMONIO 👿

Llamen a un exorcista porfavor mi pc se endemonio

Use of --save-dev

<h1>Instalacion de dependencias</h1>
npm i moment -S //package para produccion --save
npm i nodemon -D //package solo para desarrollo --save-dev
npm i nodemon -g //package de manera --global 

//hay algunos packages que tienen partes que es necesario donar para usarlas
npm i eslint -D //eslint se puede usar parcialmente
npm fund //de esta manera vemos como podemos donar

npm list -g --depth 0 //lista de los packages globales

//crea el .gitignore y agrega escrito node_modules

Creo que voy a incluir en mis dependencias globales a funny-commit para cuando este poco creativo para los mensajes. Gracias Oscar.

Sigamos!

Listar recursos Globales, importante

Alguien me puede ayudar 😦 utilizo hyper de terminal con zsh en windows y no se como puedo instalar el nodemon global, no se como pueda poner la contraseña que me pide después de ejecutar el comando “sudo npm install -g nodemon”, me imaginé que era la del usuario administrador pero no funcionó

Si quieren utilizar diferentes versiones de Node y poder instalar paquetes sin necesidad de otorgar permisos pueden usar nvm

Aprendí muchas cosas. Gracias. Resolví muchas dudas.

npm list -g --depth 0```

nodemon es una herramienta que ayuda a desarrollar aplicaciones basadas en node.js al reiniciar automáticamente la aplicación de nodo cuando se detectan cambios en el directorio.

Ver los paquetes que estan instalados de forma global

npm list -g —depth 0

Si están en Linux puede que al instalar dependencias globales deban usar sudo para hacerlo, algunos directorios requieren permisos especiales de escritura.

sudo npm i -g nodemon

Los paquetes opcionales donde quedan instalados?

–save ó -S => instala los paquetes como dependencia de producción; es decir, que nuestro proyecto siempre lo va a requerir.
–save-dev ó -D => instala los paquetes como dependencia de desarrollo; es decir, solo es necesario para nuestro entorno

-g => instala los paquetes de npm de manera global.
npm list -g --depth 0 => Nos muestra los paquetes que tenemos instalados de forma global

donde quedan instalados los paquetes globales?

Con la teminal de Cmder que recomendaron en clases anteriores, puedes trabajar con los comandos del sistema Unix.
Además, en el repositorio del mismo, encuentras el paso a paso para poder darle permisos de administrador por defecto y no tener problemas a la hora de instalar dependencias globales! 😄

excelente clase, muchas gracias 🚀

Les recomiendo esta lectura para repasar y entender mucho más sobre NPM https://blog.codota.com/a-comprehensive-beginners-guide-to-npm/

Usando este comando nos lista los paquetes junto a sus dependencias y de donde vienen
npm ls -gl

este curso me está gustando mucho 😄

Entendido y aplicado

entiendo, pero me surgen muchas preguntas. si la carpeta node_modules no se sube a ningún repositorio ni se envía a producción, ¿como envió las dependencias que si son necesarias a producción?.

¿si npm me gestiona las dependencias en cuanto a donde se guardan y como se enlazan, al subirlo mi proyecto a producción sin node_modules. no se estaría rompiendo todo ese enlace?.

¿si no node_modules no se sube a producción de que sirven las keywords o declarar las licence o el repositorio que estas usando?

si node_modules que me permite instalar dependencias de manera global para poder ocupar en varios proyectos a la vez. al no subirse a producción como gestiono mis dependencias globales, y las enlazo a los distintos proyectos que tengo trabajando en producción?.
no seria buena practica instalar en producción, boostrap por cada proyecto que este ocupando.

Para verificar si instalaron correctamente nodemon puden hacer tambien:

where nodemon
Annotation 2020-08-05 193657.png

El output deberia ser algo asi ^^^^

Un resumen de la clase.

Dependencias: Recursos que se utilizan dentro del proyecto.
Para instalar un paquete se escribe

npm install [package_name]

–save o -S --> Indica que el paquete es necesario para producción
–save-dev o -D --> Indica que el paquete es solo para desarrollo
-g --> Indica que un paquete se instala de forma global
-O --> Indica que un paquete es opcional

Hay que tener en cuenta cuando un paquete es necesario para producción y cuando no.

node_modules no debe enviarse al repositorio.

para los que tienen problemas con EACCES permission denied y no pueden instalar una dependencia o paquete de NPM en el proyecto de otra persona y que lo tiene con permisos, es fácil solamente escriban el siguiente comando

$ sudo su

//este comando te permite entrar al super usuario de tu terminal ubuntu

luego instalas el paquete o la dependencia en la carpeta de proyecto sin necesidad de sudo ¿por qué? porque ya estas en root/administrador y puedes instalar todo lo que tu quieras y listo eso era todo amigos…

ahora para salir del super usuario solo se escribe exit y listo, te devuelve al usuario local en el que estabas, luego verificas que se haya instalado en node_modules y cuando lo encuentres instalado, ya puedes vivir feliz toda la vida jejeje

muchachos de nada y dale un like 😃 espero te haya servido.

Existe algo similar en Python es decir claro que esta PIP y virtualenv o venv pero más allá hay algo que te permita ser explícito en que usas colocar scripts y demás

Por qué necesito instalar un paquete de manera opcional? Es más qué hace una instalación opcional? Pensé que lo explicaría.

una pregunta y como se diferencia cuando es un entorno de desarrollo y uno de producción?

Esta es una recomendación del sitio oficial de npm
Tip: If you are using npm 5.2 or higher, we recommend using npx to run packages globally.

Comparto este recurso para saber sobre los comandos
que uso el profesor en la clase y su significado.

https://lenguajejs.com/npm/administracion/instalar-paquetes-npm/

Recomiendo este articulo para entender más el funcionamiento de npm

¿Cómo funciona NPM y el modelo de dependencias?

para los usuarios de windows en consola en vez de touch podemos usar type nul > tuarchivo.txt 🦾💯✨

Con Ctrl + L, pueden limpiar la terminal de una manera más rápida y sencilla.

Investigue un poco mas sobre los tipos de dependencias y estos fueron mis apuntes sobre los tipos de dependencias mas frecuentes

Dependencias de Producción:

Son las dependencias que son obligatorias para correr nuestro proyecto. Son las que estan siendo utilizadas directamente en el código. Por ejemplo: mi aplicacion trabaja con mongoDB entonces puede haber una dependencia de un paquete de node de mongoDB. Esta dependencia se queda especificada en la key “dependencies” de el archivo package.json. La aplicación no funcionara si no tiene instalada una dependencia referenciada en esta llave.

La sintaxis para instalar una dependencia de producción seria la siguiente:

npm i package_name o npm i package_name --save-prod .

Dependencias de Desarrollo:

Son aquellas dependencias que son necesarias durante el proceso de desarrollo de nuestra app. Uno de los ejemplos mas comunes es nodemon. Nodemon es una heramienta que reinicia la app cada vez que detecta cambios, ahorrándonos tiempo. Es muy útil durante el desarrollo pero no en producción ya que en esta instancia la aplicación no va a sufrir mas cambios. Estas dependencias quedan especificadas bajo la llave “devDependencies” en el package.json.

La sintaxis para instalar una dependencia de desarrollo seria la siguiente:

npm i package_name --save-dev

Dependencias Opcionales

Como su nombre lo dice, estas dependencias son opcionales, esto quieres decir que si fallan en el periodo de instalación, npm simplemente lo ignorara porque no son necesarias para el correcto funcionamiento de la app. Por ejemplo: si utilizas chalk, que es una herramienta que estiliza los logs, podemos guardarla como dependencia opcional porque no afecta el correcto funcionamiento de la app, ni afecta el desarrollo de la misma. Estas dependencias se quedan establecidas dentro de la llave “optionalDependencies” en el package.json

Para instalar una dependencia opcional se usa la siguiente sintaxis:

npm i package_name --save-optional

--save-dev is used to save the package for development purpose. --save is used to save the package required for the application to run.

La plataforma de platzi se cae cada rato los videos no reproducen adecuadamente desde hace mucho, por favor actuar.

Evita problemas de permisos instalando node version manager, como nmv o n.

Como instalar nvm

npm cheat cube.png

de que sirve instalar un paquete de forma opcional? me quedo claro lo de instalar paquetes solo para local o para estar en produccion, igual que los paquetes que son globales, pero no me quedo claro lo de instalarlos de forma opcional

Instalación de Dependencias


  1. npm install name --save Esta dependencia es necesaria para vivir en producción.
  2. npm install name --save-dev ó npm i -D name Este documento solo es necesario en el entorno local o entorno de desarrollo.
  3. npm i name -D Instalación de paquete y también establecer como dependencia de desarrollo.
  4. npm install name --save Esta dependencia es necesaria para vivir en producción
  5. /mode modules Es una carpeta que es importante para el proyecto pero no debe ser enviada a ningún repositorio y podemos ignorarlas con .gitignore.
  6. npm install -g ó npm i -g name Instalar dependencias de manera global.
  7. npm install eslint -O Optional dependency.

No debemos instalar dependencias con sudo pues podemos arriesgarnos. Configuración para instalar sin sudo.

Que buena clase, por fin entendiendo con plastilina como usar npm.

RESUMEN:

//creation of index.js
mkdir path
cd path
touch index.js

//installation
npm install package
npm install package --save wich is equivalent to npm i package -S
npm install package --save-dev wich is equivalent to npm i package -D
–> it will createa dir called node_modules and a file called package-lock.json

//install a globla package
npm i -g nodemon or npm install -g nodemon

ALERT: do not use sudo comand while execute : npm i -g
TIPS: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

//look for global installed modules
npm list -g --depth 0

//npm fund
npm fund give us a form to support the proyect.

Si en su servidor de produccion solo quieren instalar las dependencias de produccion solo deben correr este comando:

npm install --only=prod
# or
npm install --only=production

y para versiones anterios de npm 3.3.0 es:

npm install --production

Instalar paquetes:

Requeridos:

npm i <package>
# or
npm i -S <package>
# or
npm i --save <package>

de desarrollo:

npm i -D <package>
# or
npm i --save-dev <package>

Globales:

npm i -g <package>
# or
npm i --global <package>

buena practica
Despues de inicializar el repo de git git init
Creat un archivo .gitignore y usa esta pagina para saber que archivos debes ignorar para cada tecnologia que uses (node, python, linux, etc)
https://www.toptal.com/developers/gitignore

Este curso es sumamente útil, debería de incluirse en la carrera de Arquitectura Frontend, justo antes de comenzar con los Frameworks CSS.