Npm

From Wiki de Caballero
Revision as of 14:12, 10 October 2018 by Felipe (talk | contribs)
Jump to navigation Jump to search

Qué es npm

El sitio de npm es npmjs.com.

En la esquina izquierda superior tienen una broma que le da significados divertidos a las siglas npm, pero en realidad significa Node Package Manager.

Fue pensado inicialmente para manejar paquetes de Node, un framework creado para usar javascript en el servidor, una de las ideas detrás de Node es usar el mismo lenguaje en el servidor y en el cliente así simplificando el proceso de desarrollo.


Como npm fue creado inicialmente como una herramienta para Node.js, tiene paquetes pues... para Node.js. Más adelante se agregaron paquetes de javascript para el cliente y herramientas de CLI (Command Line Interface, linea de comandos).

Instalación

Para instalar npm hay que tener Node instalado. Para instalar Node se puede usar:

Para que npm funcione debemos tener una versión de Node.js mayor a 0.10.32. npm es independiente de Node.js por lo que se puede tener una versión antigua de Node.js y una versión nueva de npm.

Con el siguiente comando se revisa qué versión de npm está instalada:

npm -v


Para instalar la ultima versión se ejecuta:

npm install npm@latest -g

Nota: Dependiendo del tipo de instalación el upgrade puede que tenga que ser diferente, usar el método de upgrade apropiado dependiendo de cómo se instaló.

Manejo de paquetes

npm permite instalar paquetes localmente o globalmente. Localmente significa que se instalan en el directorio actual de trabajo y globalmente significa que se instalan en el directorio global de npm, normalmente este directorio se encuentra /usr/local en un sistema tipo Unix pero esto puede cambiar dependiendo del sistema operativo, para saber donde instala paquetes npm se puede ejecutar el siguiente comando:

npm config get prefix


En la documentación explican que es posible que el directorio de instalación tenga problemas de permisos, este link puede ayudar. En ese mismo link se explica cómo cambiar el directorio por defecto.


Instalar paquetes

Instalar global vs local

Como regla general: los paquetes que se van a usar solamente en el proyecto actual deberían instalarse localmente. Si un paquete proporciona una herramienta CLI se instala globalmente.

Más info: npm 1.0: Global vs Local installation | Node.js

Ejemplo local

# En una carpeta nueva ejecutar
npm install jquery
# El siguiente comando muestra lo instalado localmente
npm ls

Ejemplo global

npm install -g jquery
# El siguiente comando muestra lo instalado globalmente
npm ls -g

package.json

Para qué sirve

Con un archivo especial se puede definir qué paquetes hacen parte de un proyecto, este archivo es package.json.

Es una forma de mantener un registro de los paquetes que necesita el proyecto actual. Si ya existe el archivo package.json y se quiere instalar los paquetes que especifica se ejecuta:

npm install

Crear archivo package.json

Para crea un archivo package.json se puede de las siguientes formas:

  • npm init, crea el archivo luego de responder algunas preguntas.
  • npm init --yes, igual al anterior pero omite algunas preguntas y las deja con un valor por defecto.
  • Manualmente, como es un archivo de texto se puede crear manualmente.

Para más info ver 05 - Working with package.json | npm Documentation.

dependencies vs devDependencies

Una vez que está el archivo creado, los paquetes a instalar se especifican en dos posibles grupos: dependencies y devDependencies.

La diferencia entre estos dos grupos es que en el primero se instalan los paquetes definitivos y en el segundo que empieza con dev se instalan solo aquellos a usar en etapa de desarrollo.

Para agregar paquetes al archivo se puede hacer manualmente o usando un comando. Los comandos son los siguientes:

# Para agregar el paquete a dependencies

npm install <package> --save
# Para agregar el paquete a devDependencies

npm install <package> --save-dev

Autocompletar

Para los fanáticos de autocompletar, npm tiene una herramienta. La herramienta es un poco de código en bash. El código se obtiene ejecutando npm completion. Para que funcione este código hay que agregarlo a alguno de los comandos de iniciación de un terminal, para cada sistema esto varia un poco pero eso se sale del alcance de este tutorial. Asumiendo que se está usando un macOS, para que cada vez que se cargue la terminal se cargue el script de autocompletado se ejecuta:

npm completion >> ~/.profile

Para probarlo, cerramos la terminal y la abrimos de nuevo y ahora usando TAB podemos usar el autocompletado de npm.
Este autocompletado no muestra los paquetes que están online, si los comandos locales y aparentemente los paquetes que ya se han instalado globalmente.


Referencias