Curso de
Día 2: Gestión de Paquetes con NPM
Vuestro anfitrión
(según mi hija de 5 años)
Más de 15 años de experiencia en desarrollo
Ingeniero senior en MediaSmart Mobile
Co-organizador de Node.js Madrid
Cacharreador impenitente
@pinchito
Guión
- NPM: gestión de paquetes
- Sesión práctica: instalación
- Anatomía de un módulo
- Sesión práctica: crea tu propio paquete
NPM
Gestión de paquetes
Comandos NPM
-
npm install
: instala un paquete (o varios)
-
npm install -g
: instalación global -
npm update
: actualiza un paquete (o varios)
-
npm remove
: elimina un paquete
-
npm test
: corre los tests del paquete
Fuente: npm-index
Resolución de Directorios
Local:
node_modules
../node_modules
../../node_modules
...
$HOME/node_modules
./node_modules
Global:
{prefix}/lib/node_modules
donde {prefix} normalmente es /usr/local
Fuente: npm-folders
Sesión Práctica 1: instalación
Queremos usar el paquete simplecached
Instalación:
npm install simplecached
Importación con require:
var simplecached = require('simplecached');
Fuente:
simplecached
Usa los paquetes importados
Importación con require:
var simplecached = require('simplecached');
var server = new simplecached.Server(port); var client = new simplecached.Client(port); client.set(key, value, function(error) {}); client.get(key, function(error, value) {});
¿Falla? ¡Es una condición de carrera!
Resuélvela
Usa npm
npm install
sin parámetrosCorre
npm list
para ver lo que tienes instaladoCorre
npm update
sin parámetrosCorre
npm remove simplecached
y luego
npm list
¡Bien!
Creando Módulos
Crear módulos es fácil y divertido
Anatomía de un módulo
Fichero léeme: README.md
Definición: package.json
Punto de entrada: index.js
Código: lib/
Documentación: doc/
Binarios: bin/
aNATOMía de un package.json
{
"name": "simplecached",
"version": "0.0.1",
"description": "Simplified memcached server.",
"contributors": ["Alex Fernández <alexfernandeznpm@gmail.com>"],
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/alexfernandez/simplecached"
},
"dependencies": {
"testing": "0.1.x"
},
"keywords" : ["simplecached", "didactic", "memcached", "caching"],
"bin": {
"simplecached": "bin/server.js"
},
"scripts": {
"test": "node test.js"
},
}
Fuente: package.json
Dependencias
-
dependencies
: se instalan siempre -
devDependencies
: se instalan sólo directamente -
optionalDependencies
: no pasa nada si faltan
Fuente: package.json dependencies
Especificación de versiones
- "1.2.3": versión específica
- ">=1.2.3": mayor que la dada
- "~1.2.3" (churro): fija la versión menor (1.2.x) y más
- "^1.2.3" (caret): fija la versión mayor (2.x.x) y más
- "*" (asterisco): cualquier versión
- URL: "http://asdf.com/asdf.tar.gz"
- Git: "git+ssh://user@hostname:project.git#commit"
Fuente: package.json dependencies, semver
Sesión Práctica 2: Tu Primer Módulo
Mueve todo a su sitio:
- Código a lib
- Documentación a doc
Crea index.js que requiere el resto
Crea un package.json
Nombre y descripción
Depende de simplecached
Usa npm
npm install
sin parámetrosCorre
npm list
para ver lo que tienes instaladoPublica con
npm publish
¡Y ahora bórralo! con npm unpublish --force
Crea un binario
Crea un script en bin/script.js
Añade el script al package.json
Instala loadtest como global
y comprueba el binario loadtest
Corre las pruebas de loadtest
Cool!
Thanks!
Curso de Node.js Amaris: NPM
By Alex Fernández
Curso de Node.js Amaris: NPM
Curso para Amaris de Node.js, 2014-11-04: gestión de paquetes con NPM
- 2,479