Saltar al contenido principal

2to3

· 4 min de lectura
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Estas últimas semanas hemos visto mucha actividad en 6to5; miles de personas lo descargan diariamente desde todos los rincones del mundo. En el último mes, se han cerrado más de 200 incidencias. Desde el lanzamiento de la versión 2.0, ha habido 867 commits y 60 versiones menores y parches. Ahora está entre el 1% superior de paquetes más descargados en npm, con casi 100k descargas solo en el último mes.

Hoy lanzamos la versión 3.0.

Nota: 6to5 no retiene correcciones de errores ni nuevas características compatibles con versiones anteriores para lanzamientos mayores. Algunas funcionalidades listadas provienen de versiones posteriores de la 2.x.

Modo Flexible

6to5 prioriza estrictamente el cumplimiento de especificaciones en todo lo que hace. A veces la especificación requiere mucha complejidad para casos límite que no afectan a la mayoría del código.

Hemos añadido el Modo Flexible para ignorar algunos de estos casos límite, creando así un resultado más limpio, pequeño y de ejecución más rápida.

Por ejemplo, llamar a super() dentro de un constructor normalmente se compilaría a:

JavaScript
function Foo() {
_get(Object.getPrototypeOf(Foo.prototype), "constructor", this).call(this);
}

Sin embargo, con el Modo Flexible se compila a:

JavaScript
function Foo() {
Bar.call(this);
}

Antes de usar el Modo Flexible, debes saber que no se alinea completamente con la especificación y podría generar código incompatible si desconoces estas inconsistencias. Consulta la documentación para más información.

Mejoras de rendimiento

En las últimas semanas @gaearon ha realizado un trabajo excepcional mejorando el tiempo de compilación de 6to5 en más de un 200%. Este tipo de optimizaciones son cruciales para nosotros y nos alegra ver contribuciones tan valiosas de miembros de la comunidad.

Zona de Pruebas: Operador Mallet

Como se ve en Ruby y CoffeeScript, el operador Mallet permite asignar valores condicionalmente según su falsedad.

JavaScript
a ||= b

se comportará como

JavaScript
if (!a) a = b;

Esta funcionalidad viene de @jridgewell. Animamos a los autores de propuestas a presentarse para implementar sus ideas junto con las últimas características del lenguaje y API.

selfContained

También presentamos un nuevo transformador opcional que elimina la necesidad de un polyfill y evita todas las limitaciones de 6to5. Alias automáticamente métodos estáticos y funcionalidades nativas de ES6, además de incluir regenerator al usar funciones asíncronas o generadores. Ideal para bibliotecas que no quieren contaminar el ámbito global.

Esto reemplaza el transformador coreAliasing y la opción includeRegenerator. Consulta la documentación para más detalles.

Transformadores con Espacios de Nombres

En la 3.0, renombramos todos los transformadores no solo por consistencia, sino para organizarlos en espacios de nombres.

Por ejemplo, renombramos todos los transformadores es7 como es7.comprehensions o es7.objectSpread, así que si quieres excluir todos los transformadores es7 puedes simplemente:

Shell
$ 6to5 --blacklist es7

Para ver la lista completa de transformadores renombrados, consulta el Registro de Cambios.


Muchas nuevas funcionalidades y correcciones de errores hacen de la v3 un lanzamiento excepcional. Revísalas todas en el Registro de Cambios.

Nos gustaría agradecer a todos los que han participado en la comunidad de 6to5 y especialmente a quienes han contribuido a hacer posible la versión 3.0.

El futuro se ve prometedor.

— The 6to5 team