Skip to content

v6.18.0

Compare
Choose a tag to compare
@hzoo hzoo released this 24 Oct 21:25
· 8992 commits to main since this release

v6.18.0 (2016-10-24)

馃殌 New Feature

  • babel-generator, babel-plugin-transform-flow-strip-types
    • #4697 Add variance node type and generate property variance annotations. (@samwgoldman)

Check out the blog post and flow docs for more info:

type T = { +p: T };
interface T { -p: T };
declare class T { +[k:K]: V };
class T { -[k:K]: V };
class C2 { +p: T = e };
  • babel-core, babel-traverse
    • #4746 Support ObjectExpression in static path evaluation. (@motiz88)
// in
['a' + 'b']: 10 * 20, 'z': [1, 2, 3]}
// out
{ab: 200, z: [1, 2, 3]}
  • babel-plugin-syntax-dynamic-import, babel-preset-stage-2
    • #4699 [import()] Initial support for dynamic-import. (@kesne)

Parser support was added in https://github.com/babel/babylon/releases/tag/v6.12.0.

Just the plugin to enable it in babel.

// install
$ npm install babel-plugin-syntax-dynamic-import --save-dev

or use the new parserOpts

// .babelrc
{
  "parserOpts": {
    "plugins": ['dynamicImport']
  }
}
  • babel-helper-builder-react-jsx, babel-plugin-transform-react-jsx

Previously we added a useBuiltIns for object-rest-spread so that it use the native/built in version if you use a polyfill or have it supported natively.

This change just uses the same option from the plugin to be applied with spread inside of jsx.

// in
var div = <Component {...props} foo="bar" />
// out
var div = React.createElement(Component, Object.assign({}, props, { foo: "bar" }));
  • babel-generator, babel-traverse, babel-types

EmptyTypeAnnotation

Added in flow here and in babylon here.

function f<T>(x: empty): T {
  return x;
}
f(); // nothing to pass...
  • babel-traverse
    • #4758 Make getBinding ignore labels; add Scope#getLabel, Scope#hasLabel, Scope#registerLabel. (@kangax)

Track LabeledStatement separately (not part of bindings).

馃悰 Bug Fix

Will give examples of code that was fixed below

  • babel-plugin-transform-react-inline-elements, babel-traverse
    • #4765 Don't treat JSXIdentifier in JSXMemberExpression as HTML tag. Closes #4027. (@DrewML)
// issue with imported components that were JSXMemberExpression
import { form } from "./export";

function ParentComponent() {
  return <form.TestComponent />;
}
  • babel-plugin-transform-es2015-modules-commonjs, babel-plugin-transform-react-inline-elements
    • #4763 Handle remapping of JSXIdentifier to MemberExpression in CommonJS transform. Closes #3728. (@DrewML)
import { Modal } from "react-bootstrap";
export default CustomModal = () => <Modal.Header>foobar</Modal.Header>;
  • babel-plugin-transform-es2015-for-of
if ( true ) {
  loop: for (let ch of []) {}
}
  • babel-core
    • #4502 Make special case for class property initializers in shadow-functions. (@motiz88)
class A {
  prop1 = () => this;
  static prop2 = () => this;
  prop3 = () => arguments;
}
  • #4631 fix(shouldIgnore): filename normalization should be platform sensitive. (@rozele)
    • babel-helper-remap-async-to-generator, babel-plugin-transform-async-generator-functions
  • #4719 Fixed incorrect compilation of async iterator methods. (@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);
    })();
  }
}
  • babel-plugin-check-es2015-constants, babel-plugin-transform-es2015-destructuring, babel-plugin-transform-es2015-modules-commonjs, babel-plugin-transform-es2015-parameters
    • #4690 Consolidate contiguous var declarations in destructuring transform. (@motiz88)
// was wrapping variables in an IIFE incorrectly
for ( let i = 0, { length } = list; i < length; i++ ) {
    console.log( i + ': ' + list[i] )
}
  • babel-plugin-transform-es2015-parameters
    • #4666 Fix error when constructor default arg refers to self or own static property. (@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 Handle side effects correctly in rest params index expressions (#4348). (@motiz88)
function first(...values) {
    let index = 0;
    return values[index++]; // ++ was happening twice
}

console.log(first(1, 2));
  • babel-plugin-transform-es2015-block-scoping
    • #4669 Fix block scoping transform for declarations in labeled statements. (@motiz88)
let x = 10;
if (1)
{
    ca: let x = 20;
}
  • babel-helper-explode-assignable-expression, babel-plugin-transform-exponentiation-operator
    • #4672 Avoid repeating impure (template) literals when desugaring **= (#4403). (@motiz88)
a[`${b++}`] **= 1;
  • #4642 Exclude super from being assign to ref variable. (@danez)
    • babel-plugin-transform-es2015-shorthand-properties, babel-plugin-transform-flow-comments, babel-plugin-transform-flow-strip-types
foo = {
  bar() {
    return super.baz **= 12;
  }
}
  • #4670 Retain return types on ObjectMethods in transform-es2015-shorthand-properties. (@danharper)
// @flow
var obj = {
  method(a: string): number {
    return 5 + 5;
  }
};
  • babel-helper-define-map, babel-plugin-transform-es2015-classes, babel-plugin-transform-flow-comments, babel-plugin-transform-flow-strip-types
// @flow
class C {
  m(x: number): string {
    return 'a';
  }
}

馃拝 Polish

  • babel-plugin-check-es2015-constants, babel-plugin-transform-es2015-destructuring, babel-plugin-transform-es2015-modules-commonjs, babel-plugin-transform-es2015-parameters
    • #4690 Consolidate contiguous var declarations in destructuring transform. (@motiz88)
// in
const [a, b] = [1, 2];
// out
var a = 1,
    b = 2;
  • babel-plugin-transform-es2015-parameters
// was outputting an extra `index++ + 0`
function first(...values) {
  var index = 0;
  return values[index++];
}
  • babel-core
    • #4685 Better error messaging when preset options are given without a corresponding preset. (@kaicataldo)

We've had a few reports of users not wrapping a preset in [] when passing in options so we added an extra error message for this.

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: ["pluginName", {option: value}] }`

For more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.
var a: Promise<boolean>[];
// instead of
var a: Promise<bool>[];

Documentation

So that our MIT License shows up.

馃彔 Internal

It's a one-time use tool (helpful after the initial release when upgrading from v5 to v6) that doesn't need to be a part of babel-cli. We'll publish it as a standalone package it someone asks for it.

  • Other
  • babel-traverse, babel-types
  • babel-cli, babel-core, babel-helper-fixtures, babel-register
  • babel-helper-transform-fixture-test-runner
    • #4735 Automatically generate missing expected.js fixtures. (@motiz88)
    • #4664 馃殌 Update chai to version 3.0.0. (@danez)
  • babel-cli, babel-code-frame, babel-core, babel-generator, babel-helper-transform-fixture-test-runner, babel-preset-es2015, babel-template, babel-traverse
    • #4734 Change usage of "suite"/"test" in unit-tests to "describe"/"it". (@DrewML)
  • babel-cli, babel-code-frame, babel-core, babel-generator, babel-plugin-transform-es2015-modules-commonjs, babel-preset-es2015, babel-template, babel-traverse
    • #4732 Run ESLint on test files, and fix lint errors in test files.. (@DrewML)
  • babel-cli, babel-core
  • babel-cli, babel-core, babel-plugin-transform-es2015-modules-systemjs, babel-preset-es2015
    • #4721 update eslint-config, fixes, add commands. (@hzoo)
  • babel-register
    • #4660 馃殌 Update home-or-tmp to version 2.0.0. (@danez)
  • babel-cli
  • babel-core
  • babel-generator
    • #4652 馃殌 Update detect-indent to version 4.0.0. (@danez)
  • babel-traverse
    • #4651 馃殌 Update globals to version 9.0.0. (@danez)

Commiters: 17