An example of NPM Module
Este módulo contiene 2 funcionalidades bien básicas. Lo usaremos de ejemplo para los ejercicios de linkear un módulo localmente, publicar en el registro público y en uno privado.
- Clonar el repo del módulo:
git@github.com:dudesl/shouts.git
- modificar el campo
name
delpackage.json
deshouts
con un nombre custom, para que no haya conflicto de nombres en el repo público. - Exponer las 2 funciones de
shouts
:cow
yvoice
. PISTA! http://www.sitepoint.com/understanding-module-exports-exports-node-js/ - Linkearlo localmente PISTA! http://vansande.org/2015/03/20/npm-link/
- Crear una carpeta para el ejercício. Vamos a llamarla
app
. -
cd app && npm init
para inicializarpackage.json
. - Crear
index.js
con el siguiente contenido http://goo.gl/86khsb -
npm install
-> nos da error pq el modulo no existe en el repo público. -
npm link shouts
para que linkee el módulo localmente. -
npm install
para instalar el resto de dependencias. - Ejecutar
index.js
, veremos que carga la dependencia como corresponde.
** Publicar en repo público **
- Crear un usuario en NPM https://www.npmjs.com/signup
- npm login para registrar las credenciales
- cat ~/.npmrc para chequear el authToken correspondiente
- npm publish para publicar
** Una vez publicado **
- ir al directorio
app
. -
npm unlink shouts
para romper el symlink local. -
npm install
traerá el módulo desde el registro público.
** Hacer disponible un bin script**
- copiar el
index.js
deapp
al modulo con nombrebin.js
- completar el campo
"bin"
delpackage.json
del módulo"bin": { "shouts": "bin.js" }
- cambiar la versión en el
package.json
-
npm publish
para actualizar el modulo publicado -
npm install -g shouts
para instalar globalmente el modulo. -
shouts
deberia estar disponible.
Publicar en repo privado
- Setear el registro privado. 2 formas de hacerlo
- npm set registry http://registry.npm.ml.com Esto lo setea en ~/.npmrc, o sea, para TODOS los módulos. Cada vez que hagamos npm publish
- hacer un
.npmrc
local al proyecto con el siguiente contenidoregistry = http://registry.npm.ml.com/ spin = false
- Loguearse con el user del registro privado (pedir por mensaje privado)
npm add user
- publicar comun y corriente con
npm publish
Cualquier conflicto con alguno de los comandos npm de este paso, usar el sufijo --registry http://registry.npm.ml.com