El administrador de paquetes de NodeJS nos permite agregar dependencias a nuestros proyectos.
NPM viene incluido dentro de la instalación de NodeJs.
Para instalar NodeJS se puede descargar del sitio web.
Se puede instalar desde el administrador de paquetes del sistema operativo:
CentOS |
---|
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
sudo yum install -y nodejs |
Ubuntu |
---|
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
sudo apt-get install -y nodejs |
MAC OS X |
---|
brew install node |
Se puede instalar con NVM(Node Version Manager)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
nvm install node
nvm use node
Obtener versión de NodeJS:
node -v
Obtener versión de NPM:
npm -v
Actualizar
npm install npm@latest -g
El archivo package.json sirve para guardar información del proyecto así como las dependencias que se deben instalar para su buen funcionamiento, dicha información es:
name: string
version: string
description: string
author: string
license: string
dependencies: object
devDependencies: object
scripts: object
keywords: array
private: boolean
main: string
directories: directories
repository: object
bugs: object
files: array
Sirve para indicar que archivos se van a incluir dentro del paquete enviado a NPM.
El archivo .npmignore junto al .gitignore sirve para ignorar archivos.
En cualquer directorio, inicializar proyecto mediante:
npm init --yes
Se generará el archivo package.json con el siguiente contenido:
Se toma la información del directorio actual.
Si se tiene un README.md se tomará la descripción de ahí.
{ "name": "nodejs-npm", "version": "1.0.0", "description": "Node Package Manager explanation", "main": "index.js", "directories": { "doc": "docs" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/lenin-anzen/nodejs-npm.git" }, "keywords": [], "author": "", "license": "ISC", "bugs": { "url": "https://github.com/lenin-anzen/nodejs-npm/issues" }, "homepage": "https://github.com/lenin-anzen/nodejs-npm#readme" }
Buscar paquetes:
npm search <package_name>
Buscar la última versión de un paquete:
npm view <package_name> version
Buscar todas las versiones de un paquete:
npm view <package_name> versions
npm show <package_name> versions
npm info <package_name> versions
npm v <package_name> versions
Para descargar un paquete al directorio node_modules dentro del directorio actual:
npm install <package_name>
Existen diferentes tipos de dependencias en el archivo package.json:
"dependencies": Estos paquetes son requeridos por la aplicación para producción:
npm install <package_name> --save
"devDependencies": Estos paquetes son requeridos sólo para desarrollo y pruebas:
npm install <package_name> -D
npm install <package_name> --save-dev
"peerDependencies": :
"bundledDependencies": :
"optionalDependencies": :
Se generará el directorio node_modules
Se acualizará el archivo package.json con el paquete y su última versión.
Instalación global de paquetes:
npm install -g <package_name>
Instalación de una versión específica:
npm install --save <package_name>@<version>
npm install --save eslint@4.1.1
Instalación de un rango de versiones:
npm install --save <package_name>@<version range>
npm install --save eslint@>=0.1.0 <0.2.0<
Instalación de los paquetes que se encuentran en el archivo package.json:
npm install
Instalación desde un repositorio del GIT:
npm install git+https://lenin-anzen@github.com/eslint/eslint.git
Se pueden instalar paquetes desde la cache usando las opciones:
--offline
--prefer-offline
Actualizar paquetes locales:
npm update
Obtener paquetes desactualizados:
npm outdated
Package Current Wanted Latest Location eslint 3.19.0 3.19.0 4.1.1 package_name jest 19.0.2 19.0.2 20.0.4 package_name jest-cli 19.0.2 19.0.2 20.0.4 package_name
Actualizar paquete instalado globalmente:
npm update -g <package_name>
Obtener paquetes desactualizados globalmente:
npm outdated -g --depth=0
Desinstalar paquete para producción:
npm uninstall --save <package_name>
Desinstalar paquete para desarrollo y pruebas:
npm uninstall --save-dev <package_name>
Desinstalar paquete global:
npm uninstall -g <package_name>
Se pueden especificar reglas para obtener ciertas versiones de los paquetes cuando actualizemos con:
npm update
Suponiendo que el paquete instalado tiene la versión 1.0.4, en nuestro archivo package.json debemos especificar la versión a la cuál quereemos actualizar.
1.0
or 1.0.x
or ~1.0.4
1
or 1.x
or ^1.0.4
*
or x
Un ejemplo de las versiones de dependencias es:
{ "dependencies" : { "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "elf" : "~1.2.3" , "two" : "2.x" , "thr" : "3.3.x" , "lat" : "latest" , "dyl" : "file:../dyl" } }
Se debe tener como mínimo un package.json generado con el comando:
npm init --yes
Para crear un usuario se puede realizar de dos formas:
Mediante el comando:
npm adduser
Crear una cuenta en el sitio web https://www.npmjs.com/signup.
Posteriormente ingresar con el comando:
npm login
Username: lenin-anzen Password: Email: (this IS public) lmeza@anzen.com.mx Logged in as lenin-anzen on https://registry.npmjs.org/.
Publicar el paquete mediante el comando:
npm publish
> my-package@0.0.1 prepublish ~\my-package > nsp check (+) No known vulnerabilities found + my-package6@0.0.1
El paquete estará disponible en la página del usuario que lo registró https://www.npmjs.com/~
Se debe especificar que el repositorio no es privado mediante la propiedad:
"private": false
De otro modo mostrará el siguiente error:
npm ERR! This package has been marked as private npm ERR! Remove the 'private' field from the package.json to publish it.
No deben existir archivos sin commit, para comprobar el estado del repositorio:
git status
En dado caso de que se muestre algún archivo, hacerle commit:
git add . git commit -m "El archivo ha cambiado por que..."
Para actualizar un paquete se deben tomar en cuenta los siguientes tipos de actualizaciones:
patch: v0.0.2
minor: v0.1.0
major: v1.0.0
Mediante el siguiente comando se actualizará la versión del archivo package.json
npm version <tipo de actualización> -m "Added Webpack to the %s version"
Al repositorio de Git se agregará un tag con el número de release.
commit c38a46ee01ff91536cc9ce7591221da0c16c4c7b (HEAD -> master, tag: v0.0.3) Author: Lenin Meza <lmeza@anzen.com.mx> Date: Wed Jul 5 17:04:01 2017 -0500 0.0.3
Se pueden agregar scripts para ejecutarse junto a la version:
"scripts": { "preversion": "npm test", "version": "npm run build && git add -A dist", "postversion": "git push && git push --tags && rm -rf build/temp" }
Después de actualizar la versión, publicar el repositorio de nuevo:
npm publish
También se debe hacer push a los commits de GIT:
git push