Buscar..


Introducción

Node Package Manager (npm) proporciona las siguientes dos funciones principales: Repositorios en línea para paquetes / módulos de node.js que se pueden buscar en search.nodejs.org. Utilidad de línea de comandos para instalar paquetes Node.js, hacer administración de versiones y administración de dependencias de paquetes Node.js.

Sintaxis

Parámetros

Parámetro Ejemplo
acceso npm publish --access=public
compartimiento npm bin -g
editar npm edit connect
ayuda npm help init
en eso npm init
instalar npm install
enlazar npm link
ciruela pasa npm prune
publicar npm publish ./
reiniciar npm restart
comienzo npm start
detener npm start
actualizar npm update
versión npm version

Instalando paquetes

Introducción

Paquete es un término usado por npm para denotar herramientas que los desarrolladores pueden usar para sus proyectos. Esto incluye todo, desde bibliotecas y marcos como jQuery y AngularJS hasta ejecutores de tareas como Gulp.js. Los paquetes vendrán en una carpeta típicamente llamada node_modules , que también contendrá un archivo package.json . Este archivo contiene información sobre todos los paquetes, incluidas las dependencias, que son módulos adicionales necesarios para utilizar un paquete en particular.

Npm usa la línea de comandos para instalar y administrar paquetes, por lo que los usuarios que intentan usar npm deben estar familiarizados con los comandos básicos en su sistema operativo, es decir, atravesar directorios y poder ver el contenido de los directorios.


Instalando NPM

Tenga en cuenta que para instalar paquetes, debe tener instalado NPM.

La forma recomendada de instalar NPM es usar uno de los instaladores de la página de descarga de Node.js. Puede verificar si ya tiene node.js instalado ejecutando el npm -v o npm version .

Después de instalar NPM a través del instalador Node.js, asegúrese de verificar si hay actualizaciones. Esto se debe a que NPM se actualiza con más frecuencia que el instalador Node.js. Para buscar actualizaciones ejecute el siguiente comando:

npm install npm@latest -g

Cómo instalar paquetes

Para instalar uno o más paquetes usa lo siguiente:

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

Nota : Esto instalará el paquete en el directorio en el que se encuentra actualmente la línea de comandos, por lo que es importante verificar si se ha elegido el directorio apropiado

Si ya tiene un archivo package.json en su directorio de trabajo actual y las dependencias están definidas en él, entonces npm install se resolverá automáticamente e instalará todas las dependencias enumeradas en el archivo. También puede usar la versión abreviada del comando npm install que es: npm i

Si desea instalar una versión específica de un paquete use:

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

Si desea instalar una versión que coincida con un rango de versiones específico, utilice:

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

Si desea instalar la última versión use:

npm install <name>@latest

Los comandos anteriores buscarán paquetes en el repositorio central de npm en npmjs.com . Si no desea instalar desde el registro npm , se admiten otras opciones, como:

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

Generalmente, los módulos se instalarán localmente en una carpeta llamada node_modules , que se puede encontrar en su directorio de trabajo actual. Este es el directorio que require() utilizará para cargar módulos para que estén disponibles para usted.

Si ya creó un archivo package.json , puede usar la --save (shorthand -S ) o una de sus variantes para agregar automáticamente el paquete instalado a su package.json como una dependencia. Si alguien más instala su paquete, npm leerá automáticamente las dependencias del archivo package.json e instalará las versiones enumeradas. Tenga en cuenta que aún puede agregar y administrar sus dependencias editando el archivo más adelante, por lo que generalmente es una buena idea hacer un seguimiento de las dependencias, por ejemplo, usando:

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

Para instalar paquetes y guardarlos solo si son necesarios para el desarrollo, no para ejecutarlos, no si son necesarios para que la aplicación se ejecute, siga el siguiente comando:

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

Instalacion de dependencias

Algunos módulos no solo proporcionan una biblioteca para su uso, sino que también proporcionan uno o más archivos binarios que están diseñados para usarse a través de la línea de comandos. Aunque todavía puede instalar esos paquetes localmente, a menudo se prefiere instalarlos globalmente para que las herramientas de línea de comandos puedan habilitarse. En ese caso, npm vinculará automáticamente los binarios a las rutas apropiadas (por ejemplo, /usr/local/bin/<name> ) para que puedan usarse desde la línea de comandos. Para instalar un paquete globalmente, use:

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

Si desea ver una lista de todos los paquetes instalados y sus versiones asociadas en el espacio de trabajo actual, use:

npm list
npm list <name>

Agregar un argumento de nombre opcional puede verificar la versión de un paquete específico.


Nota: si tiene problemas de permisos al intentar instalar un módulo npm globalmente, resista la tentación de emitir un sudo npm install -g ... para superar el problema. Es peligroso otorgar scripts de terceros para que se ejecuten en su sistema con privilegios elevados. El problema de permisos puede significar que tiene un problema con la forma en que se instaló npm . Si está interesado en instalar Node en entornos de usuario de espacio aislado, puede intentar usar nvm .

Si tiene herramientas de compilación u otras dependencias de solo desarrollo (por ejemplo, Grunt), es posible que no desee que se incluyan en la aplicación que implementa. Si ese es el caso, querrá tenerlo como una dependencia de desarrollo, que se encuentra en package.json en devDependencies . Para instalar un paquete como una dependencia de solo desarrollo, use --save-dev (o -D ).

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

Verá que el paquete se agrega luego a las devDependencies de su package.json .

Para instalar dependencias de un proyecto node.js descargado / clonado, simplemente puede usar

npm install
# or
npm i

npm leerá automáticamente las dependencias de package.json y las instalará.

NPM detrás de un servidor proxy

Si su acceso a Internet es a través de un servidor proxy, es posible que deba modificar los comandos de instalación de npm que acceden a los repositorios remotos. npm utiliza un archivo de configuración que se puede actualizar a través de la línea de comandos:

npm config set

Puede localizar la configuración de su proxy desde el panel de configuración de su navegador. Una vez que haya obtenido la configuración del proxy (URL del servidor, puerto, nombre de usuario y contraseña); necesita configurar sus configuraciones npm de la siguiente manera.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , campos de port son opcionales. Una vez que haya configurado esto, su npm install npm i -g , npm i -g etc. funcionaría correctamente.

Alcances y repositorios

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

Si el nombre de su propio paquete comienza con @myscope y el ámbito "myscope" está asociado con un repositorio diferente, npm publish cargará su paquete en ese repositorio.

También puede conservar estas configuraciones en un archivo .npmrc :

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

Esto es útil cuando se automatiza la compilación en una fe de servidor CI

Desinstalar paquetes

Para desinstalar uno o más paquetes instalados localmente, use:

npm uninstall <package name>

El comando de desinstalación para npm tiene cinco alias que también se pueden usar:

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

Si desea eliminar el paquete del archivo package.json como parte de la desinstalación, use el indicador --save (abreviado: -S ):

npm uninstall --save <package name>
npm uninstall -S <package name>

Para una dependencia de desarrollo, use el --save-dev (abreviado: -D ):

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

Para una dependencia opcional, use la --save-optional (abreviatura: -O ):

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

Para los paquetes que se instalan globalmente, use el --global flag (taquigrafía: -g ):

npm uninstall -g <package name>

Versiones semánticas básicas

Antes de publicar un paquete tienes que versionarlo. npm soporta versiones semánticas , esto significa que hay parches, versiones menores y mayores .

Por ejemplo, si su paquete está en la versión 1.2.3 para cambiar la versión, debe:

  1. versión de parche: npm version patch => 1.2.4
  2. versión menor: npm version minor => 1.3.0
  3. lanzamiento principal: npm version major => 2.0.0

También puede especificar una versión directamente con:

npm version 3.1.4 => 3.1.4

Cuando configura una versión de paquete utilizando uno de los comandos npm anteriores, npm modificará el campo de versión del archivo package.json, lo confirmará y también creará una nueva etiqueta Git con la versión prefijada con una "v", como si He emitido el comando:

git tag v3.1.4

A diferencia de otros gestores de paquetes como Bower, el registro npm no se basa en la creación de etiquetas Git para cada versión. Pero, si le gusta usar etiquetas, recuerde empujar la etiqueta recién creada después de golpear la versión del paquete:

git push origin master (para enviar el cambio a package.json)

git push origin v3.1.4 (para empujar la nueva etiqueta)

O puedes hacer esto de una sola vez con:

git push origin master --tags

Configuración de una configuración de paquete

Las configuraciones del paquete Node.js están contenidas en un archivo llamado package.json que puede encontrar en la raíz de cada proyecto. Puede configurar un nuevo archivo de configuración llamando a:

npm init

Eso intentará leer el directorio de trabajo actual para obtener información del repositorio de Git (si existe) y las variables de entorno para probar y autocompletar algunos de los valores de marcador de posición para usted. De lo contrario, proporcionará un diálogo de entrada para las opciones básicas.

Si desea crear un package.json con valores predeterminados use:

npm init --yes
# or
npm init -y 

Si está creando un package.json para un proyecto que no va a publicar como un paquete npm (es decir, con el único fin de redondear sus dependencias), puede transmitir esta intención en su archivo package.json :

  1. Opcionalmente, establezca la propiedad private en verdadero para evitar la publicación accidental.
  2. Opcionalmente, establezca la propiedad de la license en "SIN LICENCIA" para negar a otros el derecho de usar su paquete.

Para instalar un paquete y guardarlo automáticamente en su package.json , use:

npm install --save <package>

El paquete y los metadatos asociados (como la versión del paquete) aparecerán en sus dependencias. Si guarda si es una dependencia de desarrollo (usando --save-dev ), el paquete aparecerá en sus devDependencies .

Con este bare-bones package.json , encontrará mensajes de advertencia al instalar o actualizar paquetes, indicándole que le falta una descripción y el campo del repositorio. Si bien es seguro ignorar estos mensajes, puede deshacerse de ellos abriendo package.json en cualquier editor de texto y agregando las siguientes líneas al objeto JSON:

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

Publicando un paquete

Primero, asegúrese de haber configurado su paquete (como se dijo en Configuración de la configuración de un paquete ). Entonces, tienes que estar conectado a npmjs.

Si ya tienes un usuario npm

npm login

Si no tienes usuario

npm adduser

Para comprobar que su usuario está registrado en el cliente actual.

npm config ls

Después de eso, cuando su paquete esté listo para ser publicado use

npm publish

Y ya está hecho.

Si necesita publicar una nueva versión, asegúrese de actualizar la versión de su paquete, como se indica en las versiones semánticas básicas . De lo contrario, npm no le permitirá publicar el paquete.

{
    name: "package-name",
    version: "1.0.4"
}

Ejecutando scripts

Puede definir scripts en su package.json , por ejemplo:

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

Para ejecutar el script echo , ejecute npm run echo desde la línea de comandos. Los scripts arbitrarios, como el echo anterior, deben ejecutarse con npm run <script name> . npm también tiene una serie de scripts oficiales que se ejecutan en ciertas etapas de la vida del paquete (como preinstall ). Consulte aquí la descripción general completa de cómo npm maneja los campos de script.

Los scripts npm se utilizan con mayor frecuencia para tareas como iniciar un servidor, crear el proyecto y ejecutar pruebas. Aquí hay un ejemplo más realista:

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

En las entradas de scripts , los programas de línea de comandos como mocha funcionarán cuando se instalen global o localmente. Si la entrada de la línea de comandos no existe en la ruta del sistema, npm también verificará los paquetes instalados localmente.

Si sus scripts se vuelven muy largos, se pueden dividir en partes, como esta:

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

La eliminación de paquetes extraños

Para eliminar paquetes extraños (paquetes que están instalados pero no en la lista de dependencias), ejecute el siguiente comando:

npm prune

Para eliminar todos los paquetes dev , agregue --production flag:

npm prune --production

Más sobre esto

Listado de paquetes actualmente instalados

Para generar una lista (vista de árbol) de los paquetes instalados actualmente, use

npm list

ls , la y ll son alias del comando list . Los comandos la y ll muestran información extendida como descripción y repositorio.

Opciones

El formato de respuesta se puede cambiar pasando las opciones.

npm list --json
  • json - Muestra información en formato json
  • largo - Muestra información extendida
  • analizable : muestra una lista analizable en lugar de un árbol
  • global - Muestra paquetes instalados globalmente
  • profundidad - Máxima profundidad de visualización del árbol de dependencias
  • dev / desarrollo - Muestra devDependencies
  • prod / production - Muestra dependencias

Si lo desea, también puede ir a la página de inicio del paquete.

npm home <package name>

Actualizando npm y paquetes

Dado que npm en sí mismo es un módulo Node.js, puede actualizarse usando sí mismo.

Si el sistema operativo es Windows debe estar ejecutando el símbolo del sistema como administrador

npm install -g npm@latest

Si quieres comprobar si hay versiones actualizadas puedes hacerlo:

npm outdated

Para actualizar un paquete específico:

npm update <package name>

Esto actualizará el paquete a la última versión de acuerdo con las restricciones en package.json

En caso de que también quiera bloquear la versión actualizada en package.json:

npm update <package name> --save

Bloqueo de módulos a versiones específicas.

De forma predeterminada, npm instala la última versión disponible de los módulos de acuerdo con la versión semántica de cada dependencia. Esto puede ser problemático si el autor de un módulo no se adhiere a semver e introduce cambios de última hora en una actualización del módulo, por ejemplo.

Para bloquear la versión de cada dependencia (y las versiones de sus dependencias, etc.) a la versión específica instalada localmente en la carpeta node_modules , use

npm shrinkwrap

Esto luego creará un npm-shrinkwrap.json junto a package.json que enumera las versiones específicas de las dependencias.

Configuración de paquetes instalados globalmente

Puede usar npm install -g para instalar un paquete "globalmente". Esto se hace normalmente para instalar un archivo ejecutable que puede agregar a su ruta para ejecutar. Por ejemplo:

npm install -g gulp-cli

Si actualiza su ruta, puede llamar directamente a gulp .

En muchos sistemas operativos, npm install -g intentará escribir en un directorio en el que su usuario no pueda escribir, como /usr/bin . Usted no debe usar sudo npm install en este caso, ya que hay un posible riesgo de seguridad de ejecutar secuencias de comandos arbitrarios con sudo y el usuario root puede crear directorios en su casa que no se puede escribir en lo que hace más difícil futuras instalaciones.

Puede indicar a npm dónde instalar los módulos globales a través de su archivo de configuración, ~/.npmrc . Esto se llama el prefix que puede ver con el npm prefix .

prefix=~/.npm-global-modules

Esto usará el prefijo cuando npm install -g . También puede usar npm install --prefix ~/.npm-global-modules para establecer el prefijo cuando npm install --prefix ~/.npm-global-modules instalación. Si el prefijo es el mismo que su configuración, no necesita usar -g .

Para poder utilizar el módulo instalado globalmente, debe estar en su ruta:

export PATH=$PATH:~/.npm-global-modules/bin

Ahora, cuando ejecute npm install -g gulp-cli , podrá usar gulp .

Nota: Cuando npm install (sin -g ), el prefijo será el directorio con package.json o el directorio actual si no se encuentra ninguno en la jerarquía. Esto también crea un directorio node_modules/.bin que tiene los ejecutables. Si desea usar un ejecutable que sea específico para un proyecto, no es necesario usar npm install -g . Puedes usar el de node_modules/.bin .

Vinculación de proyectos para una depuración y desarrollo más rápidos.

Construir dependencias de proyectos a veces puede ser una tarea tediosa. En lugar de publicar una versión del paquete en NPM e instalar la dependencia para probar los cambios, use el npm link . npm link crea un enlace simbólico para que el último código pueda probarse en un entorno local. Esto facilita las pruebas de las herramientas globales y las dependencias de proyectos al permitir que se ejecute el último código antes de hacer una versión publicada.

Texto de ayuda

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

Pasos para vincular dependencias de proyectos.

Al crear el enlace de dependencia, tenga en cuenta que el nombre del paquete es lo que se va a hacer referencia en el proyecto principal.

  1. CD en un directorio de dependencias (ej: cd ../my-dep )
  2. npm link
  3. CD en el proyecto que va a utilizar la dependencia.
  4. npm link my-dep o si espacio de nombres npm link @namespace/my-dep

Pasos para vincular una herramienta global.

  1. CD en el directorio del proyecto (ej: cd eslint-watch )
  2. npm link
  3. Usa la herramienta
  4. esw --quiet

Problemas que pueden surgir

En ocasiones, vincular proyectos puede causar problemas si la dependencia o la herramienta global ya está instalada. npm uninstall (-g) <pkg> y luego ejecutar el npm link normalmente resuelve cualquier problema que pueda surgir.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow