Version 6.18.0 publiée
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Davantage de mises à jour Flow et de nombreuses corrections !
Nous avons ajouté 4 nouveaux collaborateurs à Babel depuis la dernière version !
Tout le travail acharné revient à eux et à nos nouveaux contributeurs !
-
Dan Harper: 🐙 @danharper, 🐦 @DanHarper7
-
Kai Cataldo: 🐙 @kaicataldo, 🐦 @kai_cataldo
Ils nous aident à maintenir ce projet à flot avec @loganfsmyth, @danez, et moi-même !
Résumé v6.18.0 (2016-10-24)
Au cas où vous ne l'auriez pas vu récemment, nous sommes revenus sur Github Issues ! Tout cela grâce à @danez
🚀 Nouvelle fonctionnalité
#4697 Ajout du type de nœud variance et génération d'annotations de variance pour les propriétés. (@samwgoldman)
Consultez le billet de blog et la documentation Flow pour plus d'informations :
type T = { +p: T };
interface T { -p: T };
declare class T { +[k:K]: V };
class T { -[k:K]: V };
class C2 { +p: T = e };
#4746 Prise en charge d'ObjectExpression dans l'évaluation statique des chemins. (@motiz88)
Utile pour babel/babili et d'autres plugins.
// in
{['a' + 'b']: 10 * 20, 'z': [1, 2, 3]}
// out
{ab: 200, z: [1, 2, 3]}
#4699 import() : Support initial pour dynamic-import. (@kesne)
Le support dans le parseur a été ajouté dans babel/babylon#v6.12.0.
Il s'agit simplement du plugin pour l'activer dans Babel.
// install
$ npm install babel-plugin-syntax-dynamic-import --save-dev
ou utilisez les nouvelles parserOpts
// .babelrc
{
"parserOpts": {
"plugins": ['dynamicImport']
}
}
#4655 Ajout de l'option useBuiltIns à helper-builder-react-jsx. (@existentialism)
Précédemment, nous avions ajouté un useBuiltIns pour object-rest-spread afin d'utiliser la version native/intégrée si vous utilisez un polyfill ou si elle est nativement supportée.
Cette modification applique simplement la même option du plugin pour le spread dans JSX.
// in
var div = <Component {...props} foo="bar" />
// out
var div = React.createElement(Component, Object.assign({}, props, { foo: "bar" }));
#4724 Ajout d'EmptyTypeAnnotation. (@samwgoldman)
Ajouté dans flow ici et dans babylon ici.
function f<T>(x: empty): T {
return x;
}
f(); // nothing to pass...
#4758 Faire ignorer les labels par getBinding ; ajouter Scope#getLabel, Scope#hasLabel, Scope#registerLabel. (@kangax)
Suivi séparé de LabeledStatement (non inclus dans les bindings).
💅 Améliorations
#4690 Consolider les déclarations var contiguës dans la transformation de déstructuration. (@motiz88)
// in
const [a, b] = [1, 2];
// out
var a = 1,
b = 2;
#4685 Amélioration des messages d'erreur lorsque des options de preset sont fournies sans preset correspondant. (@kaicataldo)
Nous avons reçu plusieurs signalements d'utilisateurs n'encadrant pas un preset avec
[]lors du passage d'options, nous avons donc ajouté un message d'erreur supplémentaire.
// incorrect, and current gives a unexpected error message
{
"presets": [
"preset",
{ "presetOptions": 'hi' } // gets parsed as another preset instead of being part of the "preset"
]
}
// correct
{
"presets": [
["preset",
{
"presetOptions": 'hi'
}
]
]
}
ReferenceError: [BABEL] /test.js: Unknown option: base.loose2. Check out http://babeljs.io/docs/usage/options/ for more information about options.
A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:
Invalid:
`{ presets: [{option: value}] }`
Valid:
`{ presets: [["presetName", {option: value}]] }`
For more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.
#4646 Modifier babel-generator pour qu'il produise boolean au lieu de bool pour le nœud AST BooleanTypeAnnotation. (@existentialism)
var a: Promise<boolean>[];
// instead of
var a: Promise<bool>[];
📝 Documentation
#4653 Ajustement de la licence pour l'affichage sur GitHub. (@existentialism)
Ainsi notre licence MIT s'affiche.
🐛 Corrections de bogues
#4765 Ne pas traiter JSXIdentifier dans JSXMemberExpression comme une balise HTML. Ferme #4027. (@DrewML)
// transform-react-inline-elements
// issue with imported components that were JSXMemberExpression
import { form } from "./export";
function ParentComponent() {
return <form.TestComponent />;
}
#4763 Gérer le remappage de JSXIdentifier vers MemberExpression dans la transformation CommonJS. Ferme #3728. (@DrewML)
// transform-react-inline-elements
import { Modal } from "react-bootstrap";
export default CustomModal = () => <Modal.Header>foobar</Modal.Header>;
#4736 Correction du remplacement pour-of à l'intérieur d'un label. (@danez)
if ( true ) {
loop: for (let ch of []) {}
}
#4502 Créer un cas spécial pour les initialiseurs de propriétés de classe dans shadow-functions. (@motiz88)
class A {
prop1 = () => this;
static prop2 = () => this;
prop3 = () => arguments;
}
#4719 Correction de la compilation incorrecte des méthodes d'itérateur asynchrones. (@Jamesernator)
// in
class C {
async *g() { await 1; }
}
// out
class C {
g() { // was incorrectly outputting the method with a generator still `*g(){`
return _asyncGenerator.wrap(function* () {
yield _asyncGenerator.await(1);
})();
}
}
#4690 Consolider les déclarations var contiguës dans la transformation de déstructuration. (@motiz88)
// was wrapping variables in an IIFE incorrectly
for ( let i = 0, { length } = list; i < length; i++ ) {
console.log( i + ': ' + list[i] )
}
#4666 Correction d'une erreur lorsque l'argument par défaut d'un constructeur fait référence à lui-même ou à sa propre propriété statique. (@danharper)
// was producing invalid code
class Ref {
static nextId = 0
constructor(id = ++Ref.nextId, n = id) {
this.id = n
}
}
assert.equal(1, new Ref().id)
assert.equal(2, new Ref().id)
#4674 Gérer correctement les effets secondaires dans les expressions d'index des paramètres rest (#4348). (@motiz88)
function first(...values) {
let index = 0;
return values[index++]; // ++ was happening twice
}
console.log(first(1, 2));
#4669 Correction de la transformation de portée de bloc pour les déclarations dans les instructions étiquetées. (@motiz88)
let x = 10;
if (1)
{
ca: let x = 20;
}
#4672 Évite la répétition des littéraux impurs (template) lors du désucrage de **= (#4403). (@motiz88)
a[`${b++}`] **= 1;
#4642 Exclusion de super de l'assignation à la variable ref. (@danez)
foo = {
bar() {
return super.baz **= 12;
}
}
#4670 Préservation des types de retour sur ObjectMethods dans transform-es2015-shorthand-properties. (@danharper)
// @flow
var obj = {
method(a: string): number {
return 5 + 5;
}
};
#4668 Préservation des types de retour de méthode dans transform-es2015-classes (Ferme #4665). (@danharper)
// @flow
class C {
m(x: number): string {
return 'a';
}
}
🏠 Interne
#4725 Retrait de babel-doctor de babel-cli. (@kaicataldo)
C'est un outil à usage unique (utile après la sortie initiale lors de la mise à niveau de v5 vers v6) qui n'a pas besoin de faire partie de babel-cli. Nous le publierons comme package autonome si quelqu'un le demande.
#4764 Ajout de l'option TEST_DEBUG pour test.sh, permettant d'activer le debugger de Node 6. (@DrewML)
Utile pour les contributeurs : TEST_DEBUG=true make test pour exécuter node --inspect sur Node v6+.
#4735 Génération automatique des fixtures expected.js manquantes. (@motiz88)
Également très utile pour les contributeurs : si vous créez un fichier de test actual.js sans le expected.js, il sera généré automatiquement (comme des tests snapshot mais avec la sortie de Babel).
#4734 Remplacement de "suite"/"test" par "describe"/"it" dans les tests unitaires. (@DrewML)
#4564 Activation de Babel pour les tests. (@danez)
Les tests non-fixture sont enfin également transpilés !
#4732 Exécution d'ESLint sur les fichiers de test et correction des erreurs de lint. (@DrewML)
#4680 Mise à jour : ESLint vers la 3.0 et mise à jour des builds CI (Ferme #4638). (@gyandeeps)
Nous permet d'utiliser la dernière version d'ESLint qui abandonne le support de Node < 4 en exécutant le lint uniquement sur la dernière version de Node, ce qui devrait réduire le temps CI.
🎉 Première Pull Request Fusionnée !
-
Andrew Levine (DrewML)
-
Eric Rozell (rozele)
-
Gyandeep Singh (gyandeeps)
-
Jordan Gensler (kesne)
-
Nazim Hajidin (nhajidin)
-
Simen Bekkhus (SimenB)
🌏 Contributeurs : 17
-
Brian Ng (existentialism)
-
Dan Harper (danharper)
-
Daniel Tschinder (danez)
-
Greenkeeper (greenkeeperio-bot)
-
Henry Zhu (hzoo)
-
Juriy Zaytsev (kangax)
-
Kai Cataldo (kaicataldo)
-
Moti Zilberman (motiz88)
-
Sam Goldman (samwgoldman)
Consultez GitHub pour le changelog complet !