Raúl Jiménez

elecash@gmail.com

@elecash

Evitando

reinventar la rueda

sobre mi

Byte

Default

Librerías JavaScript

Definición

A JavaScript library is a library of pre-written JavaScript that allows for easier development of JavaScript-based applications, especially for AJAX and other web-centric technologies"

Source: wikipedia

VOY A

CREAR MI

LIBRERÍA

ventajas

  • Control: no tengo que esperar a que arreglen bugs o saquen features
  • Rentabilidad: puedo sacar un rendimiento por la librería en el futuro
  • Conocimiento: entiendo perfectamente el código y puedo modificarlo

  • Legalidad: tengo la propiedad total del código en términos legales

desventajas

  • Control: la comunidad no puede contribuir al código resolviendo bugs o sacando features
  • Rentabilidad: desarrollar una librería puede ser muy costoso y no siempre podemos permitirnos esos costes
  • Conocimiento: he de traspasar el conocimiento a cada persona nueva que entra en el proyecto

  • Legalidad: tengo la propiedad total del código en términos legales (patent troll)

to Lib
or
not to Lib...

 

crear una librería

  • Investiga las opciones Open Source
  • Analiza si se cumplen todos tus requerimientos
  • Evalúa el código y si es fácil de extender

requerimientos

  • ¿Cuánto tiempo vas a mantener tu librería?
  • ¿Publicarás en un futuro tu librería? Si es así, debes crear una documentación y mantenerla también
  • ¿Vas a hacerla Open Source o será una librería privada?
  • ¿Quién va a mantenerla?

open source

  • Publica en GitHub
  • Ten mucho cuidado de mergear PRs que te haga la comunidad
  • Automatiza todo lo que puedas: versiones, docs, commits, etc...
  • Crea un repo privado y luego hazlo público

escoger una librería

  • ¿Cuando fue la última release?
  • ¿El código te parece correcto?
  • ¿Hay alguna empresa detrás?
  • ¿Qué competencia tiene?

recursos

para tu proyecto

  • semantic-release: publicar versiones
  • gitbook: documentación
  • travis/circle: cloud builds
  • commitizen: estandarización de commit messages
  • cypress: tests de integración
  • prettier: formateador de código

algunas librerías

  • ag-grid
  • ngx-date-fns
  • angular2-text-mask
  • Angular Material
  • angulartics2
  • Ionic

¡gracias!