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 };
// 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
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
- #4655 Add
useBuiltIns
option to helper-builder-react-jsx. (@existentialism)
- #4655 Add
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
- #4724 Add
EmptyTypeAnnotation
. (@samwgoldman)
- #4724 Add
EmptyTypeAnnotation
Added in flow here and in babylon here.
function f<T>(x: empty): T {
return x;
}
f(); // nothing to pass...
babel-traverse
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
// 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
import { Modal } from "react-bootstrap";
export default CustomModal = () => <Modal.Header>foobar</Modal.Header>;
if ( true ) {
loop: for (let ch of []) {}
}
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
// 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)
function first(...values) {
let index = 0;
return values[index++]; // ++ was happening twice
}
console.log(first(1, 2));
babel-plugin-transform-es2015-block-scoping
let x = 10;
if (1)
{
ca: let x = 20;
}
babel-helper-explode-assignable-expression
,babel-plugin-transform-exponentiation-operator
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
- #4668 Retain method return types on transform-es2015-classes (Closes #4665). (@danharper)
// @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
// in
const [a, b] = [1, 2];
// out
var a = 1,
b = 2;
babel-plugin-transform-es2015-parameters
- #4738 Avoid unnecessary +0 in transform-es2015-parameters. (@existentialism)
// 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.
- #4688 Update babel parser options. (@existentialism)
babel-generator
- #4646 Change babel-generator to output
boolean
instead ofbool
for theBooleanTypeAnnotation
AST node. (@existentialism)
- #4646 Change babel-generator to output
var a: Promise<boolean>[];
// instead of
var a: Promise<bool>[];
Documentation
- Other
- #4653 Tweak license for GitHub display. (@existentialism)
So that our MIT License shows up.
🏠 Internal
babel-cli
- #4725 Remove babel-doctor from babel-cli. (@kaicataldo)
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
- #4764 Add TEST_DEBUG env var option for test.sh, to enable node 6 debugger. (@DrewML)
- #4762 Update browserify to version 13.1.1 🚀. (@greenkeeperio-bot)
- #4748 Add clean-all command to reinstall node_modules. (@kaicataldo)
- #4744 Fix line endings on checkout. (@nhajidin)
- #4730 Add .gitattributes forcing LF line endings. (@motiz88)
- #4676 Remove travis short-circuit script. (@motiz88)
babel-traverse
,babel-types
babel-cli
,babel-core
,babel-helper-fixtures
,babel-register
babel-helper-transform-fixture-test-runner
babel-cli
,babel-code-frame
,babel-core
,babel-generator
,babel-helper-transform-fixture-test-runner
,babel-preset-es2015
,babel-template
,babel-traverse
babel-cli
,babel-code-frame
,babel-core
,babel-generator
,babel-plugin-transform-es2015-modules-commonjs
,babel-preset-es2015
,babel-template
,babel-traverse
babel-cli
,babel-core
babel-cli
,babel-core
,babel-plugin-transform-es2015-modules-systemjs
,babel-preset-es2015
babel-register
babel-cli
- #4680 Update: Eslint to 3.0 and update CI builds (Closes #4638). (@gyandeeps)
- #4662 🚀 Update fs-readdir-recursive to 1.0.0. (@danez)
babel-core
babel-generator
babel-traverse
Commiters: 17
- Andrew Levine (DrewML)
- Brian Ng (existentialism)
- Dan Harper (danharper)
- Daniel Tschinder (danez)
- Eric Rozell (rozele)
- Greenkeeper (greenkeeperio-bot)
- Gyandeep Singh (gyandeeps)
- Henry Zhu (hzoo)
- Jordan Gensler (kesne)
- Juriy Zaytsev (kangax)
- Kai Cataldo (kaicataldo)
- Moti Zilberman (motiz88)
- Nazim Hajidin (nhajidin)
- Sam Goldman (samwgoldman)
- Simen Bekkhus (SimenB)
- Jamesernator
- sugargreenbean