Construyendo módulos de utilidad para nuestras aplicaciones con npm

Edax Uclés
Startup Reef
Published in
3 min readOct 23, 2016

Primero que nada tenemos que tener una idea de que son los paquetes npm, claro si están construyendo una aplicación en node.js pues imagino que si lo saben, sino pueden visitar el siguiente link para saber como empezar con node.js.

Y aquí un tutorial de como hacer un RESTful API:

Normalmente cuando queremos usar alguna clase de utilidad en nuestra node app usamos funciones definidas en un archivo y luego las exportamos como una clase de utilidad para usarla donde la necesitamos.

Esto se torna un poco complicado y no es una buena practica si se necesita usar esta clase en varios proyectos.

En nuestro modulo tenemos dos archivos importantes: index.jsy package.json

Con el comando npm init creamos nuestro package.json como a continuación se muestra:

mkdir xtreme-math && cd xtreme-math
npm init
{
"name": "xtreme-math",
"version": "1.0.0",
"description": "Mi primer paquete",
"main": "index.js",
"scripts": {
"test": "npm test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/f1lander/xtreme-math.git"
},
"keywords": [
"npm",
"module",
"package"
],
"author": "f1lander",
"license": "MIT",
"bugs": {
"url": "https://github.com/f1lander/xtreme-math/issues"
},
"homepage": "https://github.com/f1lander/xtreme-math#readme"
}
Is this ok? (yes)

Aqui les dejo otro link para que entiendan un poco mas de npm.

En el archivo package.json se define el archivo al cual apunta nuestro modulo:

"main": "index.js"

En este exportaremos todas las clases que queremos usar.

Creamos un archivo .js que va a contener nuestra clase:

touch math.js 

Ahora en el archivo que acabamos de crear, hacemos nuestra clase que contendrá las funciones:

"use strict"; class Math {   constructor(number) {       this.number = number;   }   /* Esta función devolverá el cuadrado del numero que reciba el     constructor de esta clase.*/   square(){

return this.number * this.number;
}}module.exports = Math;

Una vez creando nuestra clase que contiene la función square, tenemos que exportar la clase como un modulo y luego en el archivo index.js que definimos como el main de paquete.

const math = require("./math");module.exports = math;

¿Facil no?

Luego que tenemos nuestro paquete listo para usar como modulo en otro proyecto podemos hacer instalando el paquete directamente desde nuestro repositorio en Github o podemos hacerlo localmente.

Github:

npm install --save https://github.com/f1lander/xtreme-math.git/* nota: si quisieran instalar de una branch específica por ejemplo "master" */npm install --save https://github.com/f1lander/xtreme-math/tarball/master

Para instalar el paquete del archivo local hay que editar el package.json y agregar en las dependencias la ruta del archivo.

"dependencies": {
"xtreme-math": "file:/Users/Doom/Desktop/xtreme-math"
}

Van a notar que en su archivo package.json se agregó el paquete que acabamos de instalar.

// github"dependencies": {
"xtreme-math": "git+https://github.com/f1lander/xtreme-math.git"
}
// archivo local previamente editado."dependencies": {
"xtreme-math": "file:/Users/Doom/Desktop/xtreme-math"
}

Nota: este tipo de clase que no depende de otra dependencia se puede usar como una “devDependencies”, aquí les dejo un link explicando las diferencias:

Una vez hecho y podemos hacer uso de nuestra paquete xtreme-math en varios proyectos.

Un ejemplo del uso de seria:

"use strict";const xtreme_math = require("xtreme-math");const number = 2;const math = new xtreme_math(number);console.log(`El Cuadrado de ${number} es: ${math.square()}`);// resultado: El Cuadrado de 2 es: 4

Espero les haya sido util este pequeño tutorial.

Edax Uclés.

--

--