Introducción al uso de NPM
NPM (Node Package Manager) es una herramienta de gestión de paquetes de JavaScript y también es el gestor de paquetes predeterminado de Node.js.
NPM permite a los desarrolladores descargar, instalar, compartir y gestionar fácilmente las bibliotecas de dependencias y herramientas de un proyecto.
NPM es la herramienta de gestión de paquetes integrada en Node.js, por lo que normalmente solo necesitas instalar Node.js y NPM se instalará automáticamente en el sistema.

Funciones principales:
Gestión de paquetes: NPM puede ayudarte a instalar y gestionar varias bibliotecas de terceros (paquetes) necesarias para el proyecto. Por ejemplo, puedes instalar, actualizar o eliminar dependencias mediante comandos simples.
Gestión de versiones: NPM admite control de versiones, lo que te permite fijar una versión específica de una dependencia o elegir la versión más reciente según tus necesidades.
Publicación de paquetes: NPM permite a los desarrolladores publicar sus propias bibliotecas en el repositorio de NPM, y otros desarrolladores pueden descargarlas y usarlas a través de NPM.
Herramienta de línea de comandos: NPM proporciona una potente herramienta de línea de comandos que se puede usar para instalar paquetes, ejecutar scripts, inicializar proyectos, entre otras operaciones.
Debido a que las versiones nuevas de Node.js ya integran NPM, podemos probar directamente ingresandonpm -vpara comprobar si la instalación fue exitosa. Si aparece el indicador de versión, significa que la instalación fue exitosa:
$ npm -v 2.3.0
Si tienes instalada una versión antigua de npm, puedes actualizarla fácilmente con el comando npm, de la siguiente manera:
$ sudo npm install npm -g /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js [email protected] /usr/local/lib/node_modules/npm
Si es un sistema Windows, usa el siguiente comando:
npm install npm -g
Usar el comando npm para instalar módulos
El formato de sintaxis para instalar módulos de Node.js con npm es el siguiente:
$ npm install <Module Name>
En el siguiente ejemplo, usamos el comando npm para instalar el módulo de framework web de uso común de Node.jsexpress:
$ npm install express
Después de la instalación, el paquete express se coloca en el directorio node_modules dentro del directorio del proyecto, por lo que en el código solo necesitas usarrequire('express')de esa manera, sin necesidad de especificar la ruta del paquete de terceros.
var express = require('express');
Instalación global e instalación local
La instalación de paquetes npm se divide en instalación local (local) e instalación global (global). Desde el comando que escribes, la diferencia es solo si se incluye o no el parámetro-gparámetro.
Instalación local:Instala el paquete en el directorio node_modules y guarda la información en dependencies de package.json.
npm install express # 本地安装
Instalación global:Se usa para instalar herramientas de línea de comandos o paquetes que se necesitan en varios proyectos.
npm install express -g # 全局安装
Si aparece el siguiente error:
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
La solución es:
$ npm config set proxy null
Instalación local
-
Alcance: De manera predeterminada, npm instalará el paquete en el directorio del proyecto actual
node_modulesen la carpeta. Esto significa que cada proyecto que use este paquete tendrá su propia copia del mismo. -
Uso: La instalación local se usa generalmente para dependencias del proyecto. Cada proyecto puede tener su propia versión de dependencia, lo que ayuda a garantizar la estabilidad y reproducibilidad del proyecto.
-
Comando de instalación: Ejecutar en el directorio del proyecto
npm install <package-name>instalará el paquete en el directorionode_modulesdentro de la carpeta, y en elpackage.jsonarchivo se agregará la dependencia. -
Gestión de versiones: Mediante el
package.jsonypackage-lock.jsonarchivo se gestionan las versiones de dependencias, asegurando la consistencia del proyecto en diferentes entornos.
Instalación global
-
Alcance: La instalación global instalará el paquete en un directorio a nivel de sistema, generalmente
/usr/local/bin(en sistemas tipo Unix) o%AppData%\npm(en Windows). -
Uso: La instalación global se usa para herramientas o utilidades de línea de comandos que no necesitan instalarse repetidamente en cada proyecto. Por ejemplo, instalar una herramienta global
create-react-appse puede usar para crear nuevos proyectos React. -
Comando de instalación: Usa el
-gindicador para instalar el paquete globalmente, por ejemplonpm install -g <package-name>。 -
Gestión de versiones: La versión de los paquetes instalados globalmente la gestiona npm, pero no se refleja en el
package.jsondel proyecto. Esto significa que los paquetes instalados globalmente pueden compartirse entre diferentes proyectos, pero también pueden causar problemas debido a conflictos de versiones.
| Característica | Instalación local | Instalación global |
|---|---|---|
| Alcance de instalación | Solo disponible en el proyecto actual | Disponible en el entorno global del sistema |
| Uso del comando | npm install package-name | npm install -g package-name |
| Ubicación de instalación | node_modulesDirectorio | Directorio global del sistema (según el sistema operativo) |
| Caso de uso | Dependencias del proyecto (bibliotecas, frameworks) | Herramientas CLI, generadores de proyectos |
| Método de acceso | Mediante elrequire()oimportuso | se usa directamente en la línea de comandos. |
| Declaración de dependencias | Enpackage.jsonregistrado en | no enpackage.jsonregistrado en |
| Control de versiones | Se pueden usar diferentes versiones en diferentes proyectos | Solo se conserva una versión en el sistema |
| Problemas de permisos | No requiere permisos especiales | Puede requerir permisos de administrador |
Si deseas tener ambas funciones, debes instalarlo en ambos lugares o usarnpm link。
A continuación, usamos el modo global para instalar express
$ npm install express -g
El proceso de instalación muestra el siguiente contenido; la primera línea muestra el número de versión del módulo y la ubicación de instalación.
[email protected] node_modules/express ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ([email protected]) ├── [email protected] ([email protected]) ├── [email protected] ([email protected], [email protected]) ├── [email protected] ([email protected]) ├── [email protected] ([email protected], [email protected]) ├── [email protected] ([email protected], [email protected]) └── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
Ver información de instalación
Puedes usar el siguiente comando para ver todos los módulos instalados globalmente:
$ npm list -g ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] ……
Si deseas ver el número de versión de un módulo, puedes usar el siguiente comando:
$ npm list grunt projectName@projectVersion /path/to/project/folder └── [email protected]
Desinstalar módulos
Podemos usar el siguiente comando para desinstalar módulos de Node.js.
$ npm uninstall express
Después de desinstalar, puedes ir al directorio /node_modules/ para ver si el paquete aún existe, o usar el siguiente comando para comprobarlo:
$ npm ls
Actualizar módulos
Podemos usar el siguiente comando para actualizar módulos:
$ npm update express
Buscar módulos
Usa lo siguiente para buscar módulos:
$ npm search express
Crear módulos
Para crear un módulo, el archivo package.json es esencial. Podemos usar NPM para generar el archivo package.json; el archivo generado incluye el contenido básico.
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (node_modules) ejemplo # 模块名
version: (1.0.0)
description: Node.js 测试模块(www.example.com) # 描述
entry point: (index.js)
test command: make test
git repository: https://github.com/ejemplo/ejemplo.git # Github 地址
keywords:
author:
license: (ISC)
About to write to ……/node_modules/package.json: # 生成地址
{
"name": "ejemplo",
"version": "1.0.0",
"description": "Node.js 测试模块(www.example.com)",
……
}
Is this ok? (yes) yes
Para la información anterior, debes ingresarla según tu propia situación. Después de escribir "yes" al final, se generará el archivo package.json.
A continuación, podemos usar el siguiente comando para registrar un usuario en el repositorio de npm (registro con correo electrónico):
$ npm adduser Username: mcmohd Password: Email: (this IS public) [email protected]
Luego, usamos el siguiente comando para publicar el módulo:
$ npm publish
Si has realizado correctamente los pasos anteriores, puedes instalar el módulo con npm igual que otros módulos.
Número de versión
Al usar NPM para descargar y publicar código, siempre se manejan números de versión. NPM utiliza números de versión semánticos para gestionar el código. Aquí hay una breve introducción.
El número de versión sigue el control de versiones semántico (SemVer), con el formato MAJOR.MINOR.PATCH, y pueden agregarse marcas adicionales.
- MAJOR (versión principal): Se incrementa cuando realizas cambios incompatibles en la API. Por ejemplo:
2.0.0。 - MINOR (versión secundaria): Se incrementa cuando agregas nuevas funciones pero mantienes la compatibilidad hacia atrás. Por ejemplo:
1.1.0。 - PATCH (versión de parche): Se incrementa cuando corriges errores sin agregar nuevas funciones. Por ejemplo:
1.0.1。
Marcas adicionales
- Versión de prelanzamiento: como
1.0.0-alphao1.0.0-beta.1, significa que esta versión todavía está en pruebas. - Metadatos de compilación: como
1.0.0+build.1, proporciona información sobre la compilación.
Ejemplo de instalación
- Instalar una versión específica:
npm install [email protected] - Instalar la última versión principal:
npm install package-name@^1.2.3(Instala la1.x.xúltima versión de)
Comandos comunes de NPM
NPM proporciona muchos comandos; puedes utilizarnpm helpPuedes ver todos los comandos.
| Comando | Descripción |
|---|---|
npm init | Inicializar un nuevopackage.jsonarchivo, ingresando la información de forma interactiva. |
npm init -y | Crear rápidamente con configuración predeterminadapackage.jsonun archivo. |
npm install package-name | Instalar localmente el paquete especificado. |
npm install -g package-name | Instalar globalmente el paquete especificado, haciéndolo disponible en todo el sistema. |
npm install | Instalarpackage.jsontodas las dependencias listadas en él. |
npm install package-name --save-dev | Instalar el paquete y agregarlo adevDependencies。 |
npm update package-name | Actualizar el paquete de dependencia especificado. |
npm uninstall package-name | Desinstalar el paquete de dependencia especificado. |
npm uninstall -g package-name | Desinstalar globalmente el paquete especificado. |
npm list | Ver la lista de paquetes de dependencias instalados en el proyecto actual. |
npm list -g --depth=0 | Ver la lista de paquetes de dependencias instalados globalmente (sin expandir el árbol de dependencias). |
npm info package-name | Ver la información detallada del paquete, incluyendo versión y dependencias, etc. |
npm login | Iniciar sesión en la cuenta de NPM. |
npm publish | Publicar el paquete actual en el registro de NPM. |
npm unpublish package-name | Retirar el paquete publicado del registro de NPM (generalmente dentro de las 24 horas). |
npm cache clean --force | Limpiar la caché de NPM. |
npm audit | Revisar las vulnerabilidades de seguridad en las dependencias del proyecto. |
npm audit fix | Corregir automáticamente las vulnerabilidades conocidas. |
npm run script-name | Ejecutarpackage.jsonlos scripts definidos en él, por ejemplonpm run start。 |
npm start | Ejecutarstartscript (equivalente anpm run start)。 |
npm test | Ejecutartestscript). |
npm build | Ejecutarbuildscript. |
npm outdated | Listar los paquetes de dependencias del proyecto que tienen versiones actualizables. |
npm version patch/minor/major | Actualizarpackage.jsonel número de versión en él, actualizando automáticamente la versión. |
npm ci | Usarpackage-lock.jsonpara instalar dependencias rápidamente, adecuado para entornos CI/CD. |
Además de lo presentado en este capítulo, NPM ofrece muchas más funciones, y package.json también tiene muchos otros campos útiles.
Además de poderhttps://docs.npmjs.com/consultar la documentación oficial, aquí se presentan algunos comandos comunes de NPM.
Usar el espejo NPM de Taobao
Debido a que usar directamente el espejo oficial de npm en China es muy lento, para resolver este problema podemos usar el espejo proporcionado por Taobao (cnpm o mediante la configuración de NPM) para acelerar la descarga e instalación de paquetes.
El espejo NPM de Taobao es un espejo completo de npmjs.org; puedes usarlo en lugar de la versión oficial (solo lectura). Actualmente la frecuencia de sincronización es de una vez cada 10 minutos para intentar mantenerse sincronizado con el servicio oficial.
Puedes usar la herramienta de línea de comandos cnpm (con soporte de compresión gzip) personalizada por Taobao en lugar del npm predeterminado:
$ npm install -g cnpm --registry=https://registry.npmmirror.com
A continuación, podemos usar cnpm para reemplazar a npm en la instalación y gestión de paquetes:
$ cnpm install [name]
Explicación y uso de package.json
package.json es un archivo central en un proyecto Node.js; contiene metadatos del proyecto, dependencias, scripts y otra información.
El archivo package.json se usa para describir los metadatos y las dependencias del proyecto; generalmente se encuentra en el directorio raíz del proyecto y es el archivo de configuración del proyecto.
El archivo package.json es un archivo en formato JSON y contiene los siguientes campos básicos:
name: el nombre del proyecto, debe ser único, normalmente se usan letras minúsculas y guiones.version: el número de versión del proyecto, que sigue el control de versiones semántico (Semantic Versioning).description: una breve descripción del proyecto.main: el archivo de entrada del proyecto, normalmente el archivo de inicio de la aplicación.scripts: define una serie de scripts de línea de comandos que se pueden ejecutar en el proyecto para realizar tareas específicas.dependencies: lista todos los paquetes de dependencias necesarios para ejecutar el proyecto y sus versiones.devDependencies: lista los paquetes de dependencias necesarios solo durante el desarrollo y sus versiones.peerDependencies: lista los paquetes que el proyecto espera que sus dependencias también tengan como dependencia.optionalDependencies: lista los paquetes de dependencias opcionales.engines: especifica las versiones de Node.js compatibles con el proyecto.repository: información del repositorio de código del proyecto, como la URL del repositorio de GitHub.keywords: las palabras clave del proyecto, que ayudan a encontrar el proyecto en la búsqueda de npm.author: información del autor del proyecto.license: información de la licencia del proyecto.
Método de uso:
-
Inicializar el proyecto: en el directorio del proyecto, ejecutar
npm initel comando; npm te guiará para crear unpackage.jsonarchivo, o generará automáticamente uno con valores predeterminadospackage.json。 -
Instalar dependencias: usar
npm install <package-name>el comando para instalar dependencias; npm agregará automáticamente las dependencias apackage.jsondel archivodependenciesodevDependenciesen él, y crearápackage-lock.jsonun archivo para fijar las versiones de las dependencias. -
Gestionar scripts: en el
scriptscampo, definir comandos, por ejemplo"start": "node app.js", luego se puede usarnpm startel comando para ejecutar estos scripts. -
Control de versiones: usar
npm versionel comando para gestionar el número de versión del proyecto; npm actualizará automáticamentepackage.jsonel número de versión en él y generará una nueva etiqueta de Git. -
Publicar el paquete: cuando el proyecto esté listo para publicarse en npm, se puede usar
npm publishel comando; npm leerápackage.jsonla información en él para publicar el paquete. -
Gestión de dependencias:
package.jsonypackage-lock.jsonEl archivo, trabajando en conjunto, garantiza que las versiones de dependencias del proyecto sean consistentes en diferentes entornos.
Una estructura típica del archivo package.json es la siguiente:
Ejemplo
"name": "my-project",
"version": "1.0.0",
"description": "A simple Node.js project",
"main": "app.js",
"scripts": {
"start": "node app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.20"
},
"keywords": ["node", "npm", "example"],
"author": "Your Name",
"license": "MIT"
}
Descripción de campos:
| Campo | Descripción |
|---|---|
| name | El nombre del proyecto, normalmente en minúsculas y con guiones. |
| version | El número de versión del proyecto, sigueIdiomaSignificadoTransformaciónla especificación de control de versionessemántica. (SemVer)。 |
| description | Una breve descripción del proyecto. |
| main | El archivo de entrada del proyecto, por defecto esindex.js。 |
| scripts | Define comandos de script ejecutables del proyecto, comonpm start。 |
| dependencies | Las bibliotecas de dependencias necesarias en tiempo de ejecución del proyecto, se agregarán al instalarnode_modules。 |
| devDependencies | Las bibliotecas de dependencias utilizadas durante el desarrollo no se instalarán en el entorno de producción. |
| keywords | Un arreglo de palabras clave, que ayuda a describir el proyecto y a encontrarlo en la búsqueda de NPM. |
| author | Información del autor del proyecto. |
| license | El tipo de licencia del proyecto, comoMIT、ISC。 |
Beneficios de usar package.json
- Gestión de dependencias: gestionar de forma centralizada las dependencias del proyecto y sus versiones.
- Automatización de tareas: mediante
scriptsel campo se pueden ejecutar tareas comunes de manera conveniente. - Control de versiones: garantizar la consistencia de las versiones del proyecto y sus dependencias, lo que facilita la colaboración del equipo.
- Describir el proyecto: proporcionar metadatos del proyecto, lo que facilita su publicación e intercambio.
Gestión de dependencias
dependencies: almacenar las dependencias necesarias para ejecutar el proyecto.
"dependencies": {
"express": "^4.17.1"
}
Se usa al instalar dependencias:
npm install express
devDependencies: almacenar las dependencias necesarias durante el desarrollo del proyecto.
"devDependencies": {
"nodemon": "^2.0.20"
}Se usa al instalar dependencias:
npm install nodemon --save-dev
Campo scripts
El campo scripts se usa para definir comandos que se pueden ejecutar con npm run <script>. Los scripts comunes incluyen:
"scripts": {
"start": "node app.js",
"test": "jest",
"build": "webpack --mode production",
"dev": "nodemon app.js"
}Ejemplo de ejecución de scripts:
npm run dev # 执行 "nodemon app.js" npm start # 等同于 "node app.js",可以直接用 npm start 运行
Explicación de los símbolos en el número de versión
^(caret): indica instalar la última versión compatible con la versión principal actual. Por ejemplo,^4.17.1se instalará4.x.xla última versión dentro de él.~(tilde): indica instalar la última versión compatible con la versión secundaria actual. Por ejemplo,~4.17.1se instalará4.17.xla última versión dentro de él.
Comandos comunes
Inicializar el archivo package.json:
npm init
Usar npm init -y permite generar rápidamente un archivo package.json predeterminado.
Ver las dependencias del proyecto:
npm list --depth=0
Actualizar dependencias:
npm update package-name
Notas
- Mantener
package.jsonel archivo conciso y preciso, evitando campos innecesarios. - usar
package-lock.jsonpara fijar las versiones de las dependencias, asegurando la consistencia del proyecto en diferentes entornos. - Actualizar las dependencias periódicamente para aprovechar las últimas funciones y correcciones de seguridad.
Puedes consultar más información en:https://npmmirror.com/。
Otras extensiones