Respuestas:
Los preajustes de etapa de Babel equivalen al Proceso TC39 y los diferentes estados de cada propuesta para un posible cambio de idioma. Incluyen implementaciones y polyfills para todos los cambios propuestos en esa etapa.
Todo lo que hay actualmente Stage-0
es Strawman, no ES6. Es un Javascript futuro y no está absolutamente seguro de que alguna vez se convierta en una especificación oficial de ECMAScript.
No se limite a configurarlo parastage-0
que funcione sin comprender las consecuencias que esto tendrá.
El preajuste de Babel que contiene solo características de ES6 es preset-es2015
stage-0
pero de ninguna manera totalmente a salvo de cambio o incluso desaprobación total (véase propuesta constructor de llamadas que se retiró después de la etapa 1). Pero lo mismo podría decirse de cualquier Etapa que no sea la Etapa 4 (es decir, Finalizada).
preset-es2015
con babel-preset-node6
estos días, si ejecuta Nodo 6 o mejor.
babel-preset-env
que puede apuntar a cualquier entorno!
babel-preset-env
VEZ DE babel-preset-es2015
. babel-preset-es2015
está casi desactualizado
Como mayormente elaborado por otras respuestas. La etapa 4 es más estable y la etapa 0, la más peligrosa. Aquí hay un pequeño desglose a un alto nivel para las 5 etapas de las respuestas anteriores y la documentación. Estoy agregando esto porque cuando llegué a esto esperaba un desglose más de alto nivel de lo que es cada etapa:
Listo para su inclusión en ECMAScript Standard, ha pasado las pruebas y formará parte de la próxima revisión
Incluye un texto completo de especificaciones e incluye complementos que han sido probados y provistos de comentarios. La solución está completa y todos los cambios posteriores se basan en la experiencia de implementación.
Soporte adicional para complementos completados tanto como sea posible. Los requisitos para estos se cumplen principalmente con solo cambios incrementales en el camino. Se espera que la semántica y la API estén completas. Lo más probable es que se convierta en parte de la especificación.
Cada nivel es inclusivo, mientras que 4 incluye 3 incluye 2 y así sucesivamente ... Espero que este resumen ayude a alguien en el futuro.
Las etapas representan las etapas definidas por el proceso TC39 que trabaja características de ideas locas pero útiles en estándares aceptados, como ES6. El proceso lleva algo de tiempo, ya que cada caso de esquina debe ser discutido, pensado, probado, polinizado, discutido un poco más, etc. Es decir, es un cuerpo de estándares. El objetivo es que decir "ES6" tendrá un significado completo y completo, al igual que decir "ES5".
En la práctica, los requisitos de su proyecto pueden variar desde mantenerse a lo probado y verdadero hasta jugar con características de lenguaje tan prácticas, aunque nebulosas. Probablemente quiera comenzar con estos enlaces:
Descripción general del proceso TC39 : esto incluye un ingenioso cuadro sobre el significado de las etapas y cómo las características progresan de una etapa a otra. Debajo de eso hay una descripción general de TC39.
Las propuestas activas : una descripción general rápida de en qué etapa se encuentran ciertas propuestas. También incluye enlaces a las propuestas finalizadas, inactivas y de etapa 0. Hoy, abril de 2017, Public Class Fields se encuentra en la etapa 2, lo que significa que se describe con precisión y los revisores han sido asignados, pero no se revisan por completo.
El paquete preestablecido de Babel para la etapa 3 : la página de complementos, con enlaces a Git y NPM, para todas las propuestas de la etapa 3. Básicamente, este complemento atrae a la colección de paquetes que, en teoría, llenan las propuestas actuales en TC39 etapa 3. En la práctica, pueden ocurrir errores. Además, puede encontrar el similar De manera similar, se vincula a las páginas de complementos para la Etapa 2 y siguientes. Esas páginas enlazarán a paquetes que incluyen propuestas de la Etapa 3 y propuestas menos estables.
Babel Preset 'env' : este preajuste de Babel admite propuestas completadas, seleccionando los paquetes correctos necesarios para admitir estas características en un entorno conocido. Por ejemplo, un node
ejecutable local requiere menos complementos que un navegador anterior. Se puede pensar en el complemento 'stage-4' que admite funciones futuras aprobadas.
En resumen, solo necesita lidiar con estas funciones de prelanzamiento si las usa. Si necesita usarlos, elija el mayor número de etapas que tenga lo que necesita. Si solo desea una instalación de juguetes con características locas para discutir alrededor del enfriador de agua, continúe y tome la etapa 0.
Este es el mejor punto de partida para entender. ¿Qué son los presets de babel?
Un extracto del enlace:
Etapa 0 - Strawman: solo una idea, posible complemento de Babel.
Etapa 1 - Propuesta: vale la pena trabajar en esto.
Etapa 2 - Borrador: especificación inicial.
Etapa 3 - Candidato: especificaciones completas e implementaciones iniciales del navegador.
Etapa 4 - Terminado: se agregará a la próxima versión anual
Cuadro general :
preset
en términos de babel. Y cada preset contiene complementos de varios niveles de riesgo.preset-0
Significa que tiene complementos para características que son muy experimentales y, por lo tanto, tienen un alto riesgo de llegar a la especificación final. Es como una idea que llegó a un desarrollador que Javascript debería tener una característica particular, e hizo un trabajo para llevarlo al proceso de propuesta TC-39.preset-1
Contiene los complementos para las ideas de características aceptadas por el TC-39, y consideran que vale la pena trabajar en ellas.preset-2
Complementos para características donde un borrador inicial está listo para la característica. Y sigue ...Por lo tanto, podría suceder que una característica en la Etapa 0 llegue a la Etapa 2 en algún momento y termine en la próxima versión de Javascript un poco más tarde.
Por lo tanto, con cada versión de estos Presets de Babel, puede encontrar diferentes conjuntos de complementos en él. También podría suceder que una característica en la etapa 0 experimentó algunos cambios e hizo cambios importantes en su funcionamiento. Y llegó, digamos, etapa 2 con una API totalmente diferente. Por lo tanto, los desarrolladores deben asegurarse de que cuando actualicen estos complementos hagan los cambios necesarios en su código.
La pregunta original es "¿Cuál es la diferencia entre babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 y babel-preset-stage-3", es extraño que las respuestas se centren en "diferencia entre TC39 etapa-0, etapa-1 .. terminología "se vota, mientras que el único relevante (aunque no exacto) se rechaza. Para citar del sitio de babel:
Un preset de Babel es una lista de complementos que se puede compartir.
Los preajustes oficiales de Babel Stage rastrearon el proceso de puesta en escena TC39 para nuevas propuestas de sintaxis en JavaScript.
Cada preajuste (ej. Etapa-3, etapa-2, etc.) incluía todos los complementos para esa etapa en particular y los que están por encima de ella. Por ejemplo, la etapa 2 incluía la etapa 3, y así sucesivamente.
La idea central es 'los que están por encima'. No estoy respondiendo la segunda mitad ya que las respuestas anteriores son muy buenas en esa parte.
Lo tengo. Ustedes pueden referirse https://babeljs.io/docs/plugins/preset-stage-0/
En una palabra corta, preset-stage-0
contiene toda la funcionalidad que preset-stage-1
tiene, y preset-stage-1
contiene toda la funcionalidad que preset-stage-2
tiene y así sucesivamente ...
El dígito inferior es más poderoso. En su proyecto, si no quiere molestarse con problemas, simplemente configure stage-0
...
stage-0
, etc.? Como usted dice "El dígito inferior es más poderoso", creo que no.
stage
con ES6
, @RGraham lo he señalado The Babel Preset which contains only ES6 features is preset-es2015
. ¡Gracias!
babel-preset-stage-0
incluye todos los complementos, que van desde stage-0
hasta stage-3
. Significa que quiero todas las características propuestas, sin importar si pueden hacerlo o no.
stage-1
? ¿Es seguro de usar? ¿Sestage-1
pueden dejar de usar algunas funciones y cambiar las API en el futuro?