npm: de instalador a publicador

Seguro que estás harto de repetir la mítica instrucción npm install paquete-x Pero, ¿has pensado en publicar tus propios módulos?. Es muy recomendable crear soluciones distribuidas y muy fácil publicarlas en npm.

Sigue este proceso y te convertirás en un creador de paquetes para npm :

Programa

Todo empieza por tener una necesidad y resolverla encapsulando su código en un módulo. Por supuesto que ese módulo puede requerir paquetes externos. Y por supuesto que tu código puede, y debe, escribirse en varios módulos.

Antes de continuar vamos a fijar un par de conceptos:

- módulo: Fichero .js que exporta un funcionalidad y oculta su implementación.

- paquete: Uno o más módulos, con sus dependientes de otros paquetes que proponen una solución reutilizable.

Conocidos los ingredientes, la receta es sencilla:

  1. Debes crear un proyecto para el paquete que vas a publicar.
  2. Has de subir el código a un repositorio público.
  3. Y debes rellenar convenientemente el package.json de tu proyecto.

Este es un ejemplo que he creado y publicado en github que te puede servir de base.

Presta especial atención al nombrado de tu proyecto porque ha de ser único en el repositorio de npm. Para reducir riesgos de colisiones de nombre te recomiendo que utilices un prefijo con tus iniciales o las de tu empresa.

No te olvides de incluir un juego de pruebas y documentación necesaria para sus uso.

Publica

Puedes descargar librerías y herramienta desde el repositorio de npm de forma anónima. De hecho, eso es lo más corriente. Pero, como era de esperar, tienes que registrarte para poder publicar contenido. El proceso de registro vía web es sencillo y grátis.

Una vez verificado puedes hacer login en la web. Pero también en la terminal de tu ordenador: npm login te pedirá el nombre de usuario y contraseña. A partir de es momento estás identificado y puedes usar las herramientas de autor:

1
npm publish

Puedes encontrar más información acerca de este mega comando en la documentación de npmjs. Pero siguiendo la máxima de cuanto menos, mejor, la herramienta hará con sus valores por defecto un publicación y actualización limpias.

La clave está en que tu fichero de configuración package.json sea correcto y lo más completo posible. Escribe un completo readme.md que se convertirá en portada de tu paquete en el repositorio de npm. Mira en mi ejemplo cómo el contenido subido a github se transforma y se ve en la página de información de npm.

Comprueba en un directorio vacío que npm install nombre-de-tu-paquete descarga todo lo necesario… y tómate un café mientras ves crecer la hierba y las estadísticas de descargas.

Actualiza

Con el tiempo mejorarás y corregirás tu solución. Te recomiendo que sigas el patrón de nombrado de versiones semántico:

x.y.z = 1.2.3 = ruptura.mejora.parche

Es bueno que etiquetes tu repositorio con estas mismas versiones para que, una vez desplegadas, se encuentre con facilidad en github.

1
2
git tag 0.1.2
git push --tags

Disfruta

Finalmente podrás utilizar ese código en todas tus aplicaciones. Sería fantástico que además otros lo encontrasen útil. Y mejor aún si te ayudan o al menos te proponen mejoras. Pero en cualquier caso siempre habrás ganado. El esfuerzo analítico que requiere se cobra con creces: dividiendo el problema, creando micro soluciones eficientes y reutilizando código siempre es rentable.

Compartir

Soluciones BackEnd 2016

Las soluciones JavaScript para el servidor que marcan tendencia en el desarrollo back end durante este 2016. Continuación de la saga que iniciamos con FrontEdge.

  • Mi apuesta de mercado sigue empezando por la base, el lenguaje JavaScript. En concreto su última y muy necesaria versión: el conocido ES6. En el lado del servidor destaco la disponibilidad de Promesas de forma nativa..

  • Las aplicaciones crecen y se controlan por su API.Así que este es el punto al que más atención debes prestarle. Por supuesto que hay que cumplir con el estándar REST y hay que documentar todo nuestro código. Pero para ser más productivo y mantener actualizado el sistema, te propongo que uses RAML. Un lenguaje para documentar APIs que con las herramientas adecuadas permite la generación de pruebas, esqueletos de aplicaciones e infraestructura.

  • El ya viejo conocido NodeJS se ha modernizado y a partir de la versión 4, especialmente en la 5, admite la mayor parte de la sintaxis ES6. Además ha mejorado su velocidad en un 25% gracias a la actualización del motor V8 que procesa internamente el JavaScript.

  • En la base de datos irrumpe con fuerza la nueva versión de MongoDB 3.2, que incorpora grandes novedades como: sistema de almacenamiento más rápido, índices parciales, validación de esquema y el esperado join entre colecciones .

En esta presentación tienes más información acerca de lo que llamo backEdge : tecnología utilizable, de última generación y con enorme potencial.

En este video tienes la charla que di con o que llamo Desarrollo Web presentando las tendencias tecnológicas del 2016.

Compartir

Soluciones FrontEnd 2016

Inicio el año proponiendo una selección de tecnologías que serán tendencia en el desarrollo front end durante este 2016.

  • Mi apuesta de mercado empieza por la base, el lenguaje JavaScript. En concreto su última y muy necesaria versión: el conocido ES6. Tras siete años desde la anterior gran revisión, el éxito y la popularidad de JS no podía esperar más. Y tu tampoco debes esperar más para conocerlo y usarlo.

  • Existe una creciente necesidad de dependencias externas en nuestra aplicaciones y sobre todo incorporar librerías provenientes de otros entornos y desarrolladas con variantes de JS. Para administrar todo ello propongo JSPM, que se incorporará definitivamente a nuestro toolbox durante el 2016.

  • De entre las librerías y frameworks disponibles, AngularJS continuará siendo el rey. Este viejo conocido está creciendo en ya en grandes empresas, banca y administraciones públicas. Mientras esperamos la gloriosa venida de la versión 2.0, tenemos la oportunidad de adecuar nuestro estilo de programación y desarrollar de manera mas limpia con la versión puente AngularJS1.5

  • En la parte visual, el look & feel propuesto por Google con Material Design es un éxito de aceptación para el desarrollo de aplicaciones empresariales. La librería AngularMaterial es una implementación para Angular de dicha especificación gráfica. Moderno y con enorme potencial.

En esta presentación tienes más información acerca de lo que llamo frontEdge : tecnología utilizable, de última generación y con enorme potencial.

Presentación frontEdge

Si tienes tiempo, mira este vídeo con una charla en la que comentamos estas y otras tecnologías para programadores.

video frontEdge

Compartir

Para qué puedo usar NodeJS

NodeJS se ha hecho muy popular por dos razones relacionas: potencia y escalabilidad. Ambas derivadas de su modelo de ejecución asíncrona no bloqueante.

Se basa en el lenguaje JavaScript: sencillo, versátil y ampliamente conocido. NodeJS complementa a JS con librerías de sistema que sacan un gran rendimiento a los ejecutables.

El uso más inmediato de NodeJS está en la programación de servicios web. Tanto en la creación de APIs como sirviendo páginas tradicionales. Esto le ha valido que se le conozca como el JavaScript del lado del servidor.

Pero, más allá de la web destaca en entornos empresariales. Se puede utilizar para construir aplicaciones de escritorio con iniciativas como (NW)[] y (electron)[]. También y sobre todo se usa para scripts de administración o monitorización en departamentos IT. Pequeños proyectos aplicables a sistemas de ficheros, máquinas y servidores. Y una derivada de esto son los proyectos de ayuda al desarrollador que se integran en los development workflows de cada vez más empresas de programación en cualquier lenguaje.

Dada la capacidad de procesamiento asíncrono es una herramienta ideal para generar sistemas que respondan en tiempo real. Y por su escasa demanda de hardware se usa también en proyectos de Internet of Things

En definitiva podemos decir que NodeJS y su ecosistema proponen un nuevo paradigma de desarrollo que eleva a JavaScript como lenguaje de propósito general.

Compartir