Introducción práctica a

para



Día 4: npm

Vuestro anfitrión

Alex Fernández

Ingeniero senior en LogTrust

Co-organizador de Node.js Madrid

@pinchito

Índice día 4


  • npm

  • Sesión práctica 1: Instalación

  • Anatomía de un paquete de Node.js.

  • Sesión práctica 2: Tu primer módulo

NPM

 

El gestor de paquetes de Node.js (entre otros)

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 Dcoumentation

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


Corre npm install sin parámetros

Corre npm list para ver lo que tienes instalado

Corre npm update sin parámetros

Corre npm remove simplecached
y luego npm list

Good job!

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 "],
    "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

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 4: 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


 npm init 

Nombre y descripción


Autor(es)


Depende de simplecached



Usa npm


Corre npm install sin parámetros

Corre npm install simplecached
Revisa el package.json

Corre npm list para ver lo que tienes instalado

Publica con npm publish


¡Y ahora bórralo! con npm unpublish --force


¡Tachán!

Bonus track: binarios


Crea un script en bin/test.js


Corre las pruebas en el script


Añade el script al package.json


Corre el script con npm test

Bonus Track


Crear un binario en bin/


Instalar globalmente con npm install -g


Usar binario

Fin del día 4

Game over

Introducción práctica a Node.js, día 4

By Alex Fernández

Introducción práctica a Node.js, día 4

Curso de Nodejs para Kairós día 4: npm. 2018-04-06.

  • 2,135