NPM Cheat Sheet
Tags: node, npm, javascript, spanish
Published: 2021-06-29 14:08:46

#**Índice**   
1. [Crear un archivo package.json](#id1) 
2. [Instalar una dependencia localmente](#id2)
3. [Instalar una versión específica de un paquete](#id3)
4. [Desinstalar un paquete](#id4)
5. [Listar las dependencias instaladas](#id5)
6. [Obtener información de un paquete en específico](#id6)
7. [Listar las dependencias de una dependencia](#id7)
8. [Listar paquetes que se pueden actualizar](#id8)
9. [Referencias](#id9)
10. [Conclusiones](#id10)

## **1. Crear un archivo `package.json`** <a name="id1"><a/>
* Crea un archivo `package.json` preguntandote por la configuración del proyecto en la consola:

```js
npm init
```

* Crea un archivo `package.json` por defecto (manera rápida):

```js
npm init --yes
npm init -y
```
> Tanto `npm init --yes` como `npm init -y` hacen lo mismo.

## **2. Instalar una dependencia localmente** <a name="id2"><a/>
* Dependencias de producción

```js
//Comando largo
npm install [nombre-del-paquete]
// ó
npm install [nombre-del-paquete] --save

//Comando resumido
npm i [nombre-del-paquete]
// ó
npm i [nombre-del-paquete] --save
```

> El flag `--save` se usaba en versiones antiguas de Node, hoy ya no es necesario escribirlo, pero es probable que lo veas en algunas documentaciones.  

* Dependencias de desarrollo

```js
//Comando largo
npm install [nombre-del-paquete] --save-dev

//Comando corto
npm install [nombre-del-paquete] -D

```

> El flag `--save-dev` y `-D` hacen lo mismo, puedes usar el que te sea mas comodo.

## **3. Instalar una versión específica de un paquete** <a name="id3"><a/>
```js
npm i [nombre-del-paquete]@[version]
// npm i colors@1.3.2
```

## **4. Desinstalar un paquete** <a name="id4"><a/>
Tanto dependencias de producción como de desarrollo, usa:

```js
// dependencias locales:
//Comando largo
npm uninstall [nombre-del-paquete]

//Comando corto
npm un [nombre-del-paquete]

// dependencias globales:
//Comando largo
npm uninstall -g [nombre-del-paquete]

//Comando corto
npm un -g [nombre-del-paquete]
```

## **5. Listar las dependencias instaladas** <a name="id5"><a/>
```js
// dependencias locales:
npm list
// dependencias globales:
npm list -g --depth=0
```

## **6. Obtener información de un paquete en específico** <a name="id6"><a/>
```js
npm view [nombre-del-paquete]
```

## **7. Listar las dependencias de una dependencia** <a name="id7"><a/>
```js
npm view [nombre-del-paquete] dependencies
```

## **8. Listar paquetes que se pueden actualizar** <a name="id8"><a/>
```js
npm outdate

```

## **9. Simular la instalación de un paquete** <a name="id9"><a/>
```js
npm i [nombre-del-paquete] --dry-run
// solo regresa la salida por consola pero no lo instala, útil para ver información del paquete
```

## **10. Re instalar todos los paquetes de package.json** <a name="id10"><a/>
```js
npm install
npm i
```

## **11. Instalar forzosamente un paquete** <a name="id11"><a/>
```js
npm install [nombre-del-paquete] --force
npm install [nombre-del-paquete] -f
```

## **12. Actualizar la versión de todos los paquetes que lo necesiten** <a name="id12"><a/>
```js
npm update
```

## **13. Actualizar la versión de un paquete en concreto** <a name="id13"><a/>
```js
npm install [nombre-del-paquete]@latest 
```

## **14. Modo verboso para cualquier comando** <a name="id14"><a/>
```js
[cualquier-comando] --dd
// esto activa el la salida verbosa de cualquier comando, util para debuggear
```

## **15. Limpiar caché de npm** <a name="id15"><a/>
```js
npm cache clean -f
//verificar que el cache esta limpio:
npm cache verify
```

## **16. Borrar la carpeta de node_modules** <a name="id16"><a/>
```js
// instalar paquete:
npm i -g rimraf
//ahora ejecutar:
rimraf [nombre-carpeta] // ej: rimraf node_modules
```

## **17. Versionado de paquetes** <a name="id17"><a/>
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.

![version](https://static.platzi.com/media/user_upload/wheelbarrel-no-tilde-caret-white-bg-w1000-72ca1a72-4c7f-4abe-8482-425c01a72f89.jpg)

Existen dos símbolos que acompañan a este versionado, que 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 ^, actualizará la versión minor y patch, por lo que tendrás versiones como “^5.3.3”, “^5.4.3”, “^5.4.4”, etc.
Si tiene la tilde ~, actualizará la versión de patch, por lo que tendrás versiones como “~5.2.4”, “~5.2.5”, “~5.2.6”, etc.
Lo recomendable es quitar estos símbolos y tener la versión exacta para evitar problemas de versionado, principalmente con paquetes que los mantienen pocas personas o no son fiables.



Puedes encontrar un Cheat Sheet más completo en este [link](http://www.ndpsoftware.com/git-cheatsheet.html#loc=workspace;)

## **10. Conclusiones** <a name="id9"><a/>
* A mi criterio estos son los comandos mas usados con npm.
* No los memorices, para eso está este pequeño **NPM Cheat Sheet**.

## **11. Referencias** <a name="id10"><a/>
* https://www.udemy.com/course/nodejs-guia-desde-cero/

---

Quiza esto sea de tu interés:

{% link https://dev.to/duxtech/adios-fontawesome-hola-tabler-icons-1625 %}

{% link https://dev.to/duxtech/3-metodos-muy-utiles-para-objetos-en-javascript-1lk8 %}

{% link https://dev.to/duxtech/las-mejores-guias-completas-para-flexbox-y-cssgrid-1ib3 %}

---

![img](https://media.giphy.com/media/112Fjas8rghItO/giphy.gif)