Meteor 1.2 llegó a la Tierra y con él trajo el Sol


Fantásticas noticias para el desarrollo web a nivel mundial tuvieron lugar el pasado 22 de septiembre del 2015. Fue lanzada la mayor actualización en la historia del framework MeteorJS, con muchas mejoras en casi todas las partes del stack.

A continuación te plasmo las novedades ordenadas por el orden de importancia para el desarrollador.

Mejoras en las Build Tools

Las herramientas encargadas de construir tu aplicación son ahora mucho más rápidas y eficientes. Se creó un nuevo pipeline con las siguientes características:

  • La aplicación en el navegador se recargará más rápido pues solo se recompilarán los ficheros que se modifiquen. Esto es superútil en los proyectos grandes.
  • La cadena de construcción de la aplicación es pluggable, o sea, puedes agregar tareas intermedias al proceso, dígase compiladores personalizados, minificadores y linters (checkeadores de sintaxis).
  • Se agrega por defecto a la cadena de construcción “soporte para EcmaScript 2015“, la última especificación de JavaScript. Lo interesante aquí es que puedes utilizar en tus proyectos meteor las nuevas características del lenguaje sin preocuparte por su compatibilidad con los navegadores actuales, incluso puedes combinar JavaScript ordinario con lo nuevo de ES2015 sin problemas.

Un ejemplo de este último punto es la capacidad de utilizar fat arrows para declarar funciones:

this.autorun(() => { 
  this.subscribe('data');
});

Otro ejemplo puede ser el aplicar la característica Enhanced Object Literals de ES2015 para declarar helpers:

Template.Contactos.helpers({
  contactos(){
    return Contactos.find();
  },
  cantidad(){
    return Contactos.find().count();
  }
});

Un entorno más desacoplado

Las aplicaciones Meteor v1.1- incluyen por defecto el paquete standard-packages, que incluye una serie de paquetes del core que no se pueden quitar, como Blaze, jQuery, Underscore, Tracker y DDP, así que aunque no utilices alguna de ellas, estabas forzado a tenerlas en tu aplicación.

En Meteor 1.2 el paquete standard-packages está obsoleto, en cambio se agregan los paquetes que se van a usar de forma explícita. Cuando actualizas tus aplicaciones a Meteor 1.2, éste automáticamente reemplazara standard-packages por los siguientes paquetes:

  • meteor-base — Conjunto de paquetes imprescindibles para que tu aplicación funcione (no eliminar al menos que sepas lo que haces). Contiene a meteor, underscore y webapp.
  • mobile-experience — Paquetes que mejoran la experiencia en dispositivos móviles. Estos solo inyectan código cuando construyes tu aplicación para Córdova iOS o Android.
  • mongo — Soporte para la base de datos Mongo. Eliminar este paquete no elimina Minimongo del cliente, ni previene a Meteor crear una instancia local de Mongo durante el desarrollo (para prevenir esto, debes usar la variable de entorno MONGO_URL=none).
  • blaze-html-templates — Blaze, Spacebars, y soporte para el sistema de plantillas. Por primera vez en la historia de Meteor son eliminables (por ejemplo, si quieres crear una aplicación React o Angular no necesitas Blaze)
  • jQuery — Actualmente Blaze depende fuertemente de él, aunque no lo uses en tu app, si utilizas Blaze, no lo quites.
  • session — El objeto global Session. Lo puedes quitar si deseas.
  • tracker — El objeto global Tracker. meteor-base depende fuertemente de él. No se recomienda quitarlo.

El paquete meteor-platform también exportaba los símbolos Logging, Reload, Random, EJSON, Spacebars y check en el namespace global de tu aplicación. Así que cuando Meteor actualiza a 1.2, añadirá los paquetes correspondientes para asegurar la compatibilidad.

Meteor Mobile

Hay grandes mejoras en el soporte de Meteor para construir aplicaciones móviles desde la versión 1.2 en adelante. La aproximación anterior a la versión 1.2 no dejaba mejorar las cosas lo suficientemente rápido, por lo que se realizaron grandes cambios arquitectónicos a las herramientas de construcción móvil.

Córdova actualizado

Córdova se actualizó a su versión 5.2.0. Esto incluye Cordova Android 4.1 y Cordova iOS 3.9. Con esta versión se utiliza npm para la gestión de plugins (al fin!).

Añade Crosswalk con un comando

Gracias al soporte de Cordova Android por añadir soporte a las vistas web dinámicas (pluggable web views), ahora es posible instalar el plugin Crosswalk, el cual ofrece grandes mejoras en el renderizado web para versiones de Android viejas.

Este reemplaza el estandard Web View de Android con una versión basada en Chromium, el proyecto opensource detrás de Google Chrome.

El plugin lo puedes añadir a tu aplicación con meteor add crosswalk.

Trae tus propias herramientas

Las herramientas de Android que se descargaban con un comando en Meteor fueron eliminadas y una instalación global del SDK de Android ahora es requerido.

Esto es un gran avance, pues permite mantener la cadena de construcción actualizada y evita algunos complejos fallos que son muy difíciles de diagnosticar.

Instala plugins desde el sistema de ficheros

Ahora puedes lograr esto utilizando las URLs file://. Las referencias relativas son interpretadas de forma relativa al directorio de Meteor (~/.meteor).

Instala plugins desde una dirección Git

Meteor no soporta instalar plugins de Cordova desde ficheros comprimidos, en cambio, soporta en esta versión URLs Git con una referencia SHA (como https://github.com/apache/cordova-plugin-
file#c452f1a67f41cb1165c92555f0e721fbb07329cc
). Las URLs de Github en forma de tarball son convertidos de forma automática.

Especifica un número de construcción para tu App

Ya puedes especificar un buildNumber en el fichero App.info, el cual es usado para estalecer el código android-version y la versión del bundle ios-CF en el fichero config.xml del proyecto Cordova.

El buildNumber es usado para diferenciar entre diferentes versiones de la aplicación, y debe ser incrementado antes de distribuir la aplicación a tiendas y dispositivos de prueba.

Actualiza sin riesgos

Si tienes una aplicación existente y deseas actualizar a Meteor 1.2, recomiendo utilices los siguientes pasos para garantizar que puedas volver atrás en caso de algún fallo:

  1. Instala Git e inicialízalo en tu proyecto: git init
  2. Crea un commit: git add . && git commit -m "initial".
  3. Crea una nueva rama: git checkout -b miSalva
  4. Actualiza a Meteor 1.2: meteor update.

En caso de que algo falle y quieras volver atrás, solo vuelve a la rama master de tu proyecto con el comando git checkout master.

Si todo fue bien y te quieres quedar con Meteor 1.2 y olvidar la anterior versión, haz un merge:

git checkout master
git merge miSalva

Conclusiones

La mayoría de mis apps ya están en Meteor 1.2.0.1 – última versión – y todo viento en popa. De hecho, en la cuarta parte de Client side Meteor, el proyecto ya se encuentra actualizado.

Para más información sobre las notas de lanzamiento, verifica estos links: