Recomendaciones a la hora de Actualizar Angular
Angular es un framework de gran interés en los últimos años. No es para menos, desde que salieron las Beta de Angular 2 las vimos con buenos ojos, era una de las cosas que más necesitábamos para el desarrollo web. Poco a poco empezamos a encontrarle nuevos nichos, y a solo 3 años de ese momento Angular es utilizado en sitios web, WebApps, aplicaciones de escritorio (Electron) y aplicaciones móviles (Apache Cordova). La apuesta parece clara, sin embargo, a la hora de actualizar la versión de la librería siempre nos toca pensar como hacerlo. En esta entrada vamos directo al grano: las mejores prácticas a la hora de actualizar Angular.
¿Es necesario actualizar?
En principio siempre es necesario actualizar ya que el framework tiene mejoras sustanciales de rendimiento y seguridad entre versiones. La pregunta en todo caso sería ¿es necesario actualizar en este momento? Y en ese caso la respuesta es un poco más complicada. Las versiones mayores de Angular tiene un ritmo de salida vertiginoso (muy propio de Google). Salen cada 6 meses y tienen 12 meses de soporte. Es decir, que si no existe una feature que nos interese en la nueva versión, podemos esperar a la siguiente para actualizar, con la contra de que necesitaremos actualizar si o si para no quedar tan atrasado.
El Comando ng update
Tanto Angular 4 como Angular 5 tuvieron profundas críticas de los desarrolladores con los procesos necesarios a la hora de actualizar. Y en verdad era un problema, solucionar todo lo que se rompía al actualizar podía llevar tanto tiempo como un desarrollo íntegro. Esto llevó a varios cambios en la estructura (como el archivo angular.json) pero sobre todo introdujo el comando ng update en Angular 6. Si bien no es 100% automático (tampoco es conveniento que lo sea) la verdad es que ahorra muchísimo tiempo. Lo menciono porque a pesar de haberse introducido hace dos (y casi tres) versiones, no se está usando tanto. En principio ng update tan solo lista las versiones que están en condiciones de ser actualizadas, si queremos que Angular lo haga "automáticamente" el comando es ng update --force --all. Esto va a actualizar el package.json y hacer algo así como un npm install. Si bien no suelen recomendar el --force, la verdad es que casi no rompe nada (siempre utilizar repositorios es un gran aliado).
Actualizar de a una versión a la vez
Esta es una recomendación oficial de Angular. No se recomienda para nada hacer actualizaciones saltándose versiones. Es decir, si tenemos una App en la version 6 no saltar a la version 8 sin pasar primero con la 7. Esto es importante, ya que la compatibilidad está garantizada entre versiones, pero incurre en errores cuando "saltamos" una versión mayor.
Información de la versión (bug fixes, cambios, etc)
Es redundante, pero lo hacemos poco. Una nueva versión trae Features, pero muchas veces eso implica que cambie la lógica en la sintaxis. Como casos más conocidos en Angular, tenemos la introducción (en su momento) de Renderer2 para pisar a Renderer, o de los recientes cambios en el ViewChild y los Polyfills. Esto produce que solo actualizando de una versión mayor a la otra, dependiendo nuestro código, entremos en un sin fin de errores que nos hagan dedicarle bastante tiempo. Ante esto no hay mucho que hacer, incluso leyendo toda la lista de cambios puede no ser suficiente. Lo mejor es tener en claro que reglas lógicas estamos utilizando en nuestra App y revisar en la Doc de Angular correspondiente a la versión que queremos actualizar si hay cambios internos o de sintaxis. Sino, tocará resolver cada error una vez salgan al compilar.
La versión de Typescript
Este punto va de la mano del anterior y está relacionado con el comando ng update. La versión de Typescript que automáticamente detecta Angular para hacer update (con ng update) suele ser una versión posterior a la que necesita Angular. Esto parece no tratarse de un Bug, pero lo importante es Angular no va a funcionar y nos va a pedir una versión anterior de TS. También nos saldrá una advertencia posterior a la actualización diciendo las versiones soportadas por esa versión en particular de Angular. En esos casos deberemos prestar atención e instalar la versión correcta de TS mediante NPM.
Acerca de:
Ignacio Buioli
Licenciado en Artes Multimediales. Ha desarrollado numerosos proyectos de Multimedia así como también escrito artículos y traducido textos del mencionado tema. En Moldeo Interactive es Socio y Programador; encargándose, además, de gran parte de las redes y los cursos online.