diff --git a/CHANGELOG.md b/CHANGELOG.md
index 96d28278e150b..f90ac42c1212b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,107 @@ _Note: Gaps between patch versions are faulty, broken or test releases._
See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
+## 6.24.0 (2017-03-13)
+
+A quick release for 2 features:
+
+- Thanks to @rwjblue, there is now a `noInterop` option for our `es2015-modules` transform to remove the `interopRequireDefault` and `interopRequireWildcard` helpers.
+
+Input
+
+```js
+import foo from "foo";
+foo;
+```
+
+Regular Output
+
+```js
+var _foo = require("foo");
+var _foo2 = _interopRequireDefault(_foo);
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+_foo2.default;
+```
+
+Output with option `noInterop`
+
+```js
+"use strict";
+var _foo = require("foo");
+(0, _foo.default)();
+```
+
+> This also helps [ember-cli migrate to Babel 6](https://github.com/ember-cli/ember-cli/pull/6828).
+
+- @izaakschroeder has added `dirname` to the preset constructor which presets can use to resolve things relative to files.
+
+Example usage of `fileContext.dirname` in a preset
+
+```js
+module.exports = function preset (context, options, fileContext) {
+ if (/resolve-addons-relative-to-file$/.test(fileContext.dirname)) {
+ return {
+ plugins: ['plugin-here'],
+ };
+ }
+ return {};
+};
+```
+
+> This will help out with reusing a [`browserslist` file for babel-preset-env](https://github.com/babel/babel-preset-env/issues/26) and for plugins like https://github.com/tleunen/babel-plugin-module-resolver.
+
+#### :rocket: New Feature
+* `babel-plugin-transform-es2015-modules-amd`, `babel-plugin-transform-es2015-modules-commonjs`
+ * [#5427](https://github.com/babel/babel/pull/5427) Backport `noInterop` flag for modules to 6.x. ([@rwjblue](https://github.com/rwjblue))
+* `babel-core`
+ * [#4834](https://github.com/babel/babel/pull/4834) Pass `dirname` as extra metadata to preset constructor. ([@izaakschroeder](https://github.com/izaakschroeder))
+
+#### :bug: Bug Fix
+* `babel-generator`
+ * [#5453](https://github.com/babel/babel/pull/5453) Keep parentheses for logical expression when in await expression. ([@aaronang](https://github.com/aaronang))
+ * [#5339](https://github.com/babel/babel/pull/5339) Wrap some generated do expressions in parens. ([@zjmiller](https://github.com/zjmiller))
+* `babel-generator`, `babel-plugin-transform-object-rest-spread`
+ * [#5322](https://github.com/babel/babel/pull/5322) Fix for-await printing. ([@danez](https://github.com/danez))
+
+#### :memo: Documentation
+
+* [#5449](https://github.com/babel/babel/pull/5449) Fixed broken links in README.md [skip-ci]. ([@sethbergman](https://github.com/sethbergman))
+* [#5409](https://github.com/babel/babel/pull/5409) Fix transform-object-rest-spread README. ([@existentialism](https://github.com/existentialism))
+* [#5379](https://github.com/babel/babel/pull/5379) Lint code snippets in READMEs. ([@xtuc](https://github.com/xtuc))
+* [#5334](https://github.com/babel/babel/pull/5334) Shorthand properties examples. ([@bhoule](https://github.com/bhoule))
+* [#5329](https://github.com/babel/babel/pull/5329) Update CONTRIBUTING.md with respect to coverage check [skip ci]. ([@zjmiller](https://github.com/zjmiller))
+
+#### :house: Internal
+* Other
+ * [#5338](https://github.com/babel/babel/pull/5338) Improve babel-generator's code coverage. ([@alxpy](https://github.com/alxpy))
+ * [#5336](https://github.com/babel/babel/pull/5336) Enable codecov partial coverage. ([@danez](https://github.com/danez))
+ * [#5350](https://github.com/babel/babel/pull/5350) Remove redundant NODE_ENV=test in Makefile. ([@aaronang](https://github.com/aaronang))
+ * [#5312](https://github.com/babel/babel/pull/5312) [skip ci] Add devEngines to package.json. ([@yavorsky](https://github.com/yavorsky))
+* `babel-cli`
+ * [#5342](https://github.com/babel/babel/pull/5342) Add test for passing arguments to babel-node (#5163). ([@outsideris](https://github.com/outsideris))
+* `babel-traverse`
+ * [#5296](https://github.com/babel/babel/pull/5296) Add test for reference paths. ([@jasonLaster](https://github.com/jasonLaster))
+
+#### Committers: 14
+- Aaron Ang ([aaronang](https://github.com/aaronang))
+- Alex Kuzmenko ([alxpy](https://github.com/alxpy))
+- Artem Gurzhii ([artemgurzhii](https://github.com/artemgurzhii))
+- Artem Yavorsky ([yavorsky](https://github.com/yavorsky))
+- Brendan Houle ([bhoule](https://github.com/bhoule))
+- Brian Ng ([existentialism](https://github.com/existentialism))
+- Daniel Tschinder ([danez](https://github.com/danez))
+- Izaak Schroeder ([izaakschroeder](https://github.com/izaakschroeder))
+- Jason Laster ([jasonLaster](https://github.com/jasonLaster))
+- JeongHoon Byun (aka Outsider) ([outsideris](https://github.com/outsideris))
+- Robert Jackson ([rwjblue](https://github.com/rwjblue))
+- Seth Bergman ([sethbergman](https://github.com/sethbergman))
+- Sven SAULEAU ([xtuc](https://github.com/xtuc))
+- Zachary Miller ([zjmiller](https://github.com/zjmiller))
+
+## 6.23.1 (2017-02-13)
+
+Regression: Revert https://github.com/babel/babel/pull/5306 since it made a backwards-incompatible change.
+
## 6.23.0 (2017-02-13)
#### :rocket: New Feature
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e34f627436da9..f979d6d797bde 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,13 +2,15 @@
----
-
+
Setup
|
Running linting/tests
|
Writing tests
|
+ Debugging code
+ |
Internals
@@ -25,7 +27,7 @@ Contributions are always welcome, no matter how large or small.
- If you aren't just making a documentation change, you'll probably want to learn a bit about a few topics.
- [ASTs](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (Abstract Syntax Tree): The Babel AST [spec](https://github.com/babel/babylon/blob/master/ast/spec.md) is a bit different from [ESTree](https://github.com/estree/estree). The differences are listed [here](https://github.com/babel/babylon#output).
- - This repository's [`/doc`](/doc) directory for notes on Babel's internals
+ - This repository's [`/doc`](https://github.com/babel/babel/tree/master/doc) directory for notes on Babel's internals
- Check out [the Babel Plugin Handbook](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md#babel-plugin-handbook) - core plugins are written the same way as any other plugin!
- Check out [AST Explorer](http://astexplorer.net/#/scUfOmVOG5) to learn more about ASTs or make your own plugin in the browser
- When you feel ready to finally jump into the babel source code a good start is to look out for issues which are labeled with [help-wanted](https://github.com/babel/babel/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and/or [beginner-friendly](https://github.com/babel/babel/issues?q=is%3Aissue+is%3Aopen+label%3A%22beginner-friendly%22).
@@ -42,7 +44,7 @@ Babel is built for node 0.10 and up but we develop using node 6. Make sure you a
You can check this with `node -v` and `npm -v`.
-#### Setup
+### Setup
```sh
$ git clone https://github.com/babel/babel
@@ -72,7 +74,7 @@ If you wish to build a copy of Babel for distribution, then run:
$ make build-dist
```
-#### Running linting/tests
+### Running linting/tests
You can run lint via:
@@ -103,7 +105,7 @@ $ make test-only
Most likely you'll want to focus in on a specific issue.
-To run tests for a specific package in [packages](/packages), you can use the `TEST_ONLY` environment variable:
+To run tests for a specific package in [packages](https://github.com/babel/babel/tree/master/packages), you can use the `TEST_ONLY` environment variable:
```sh
$ TEST_ONLY=babel-cli make test
@@ -124,30 +126,31 @@ $ TEST_DEBUG=true make test
To test the code coverage, use:
```sh
+$ BABEL_ENV=cov make build
$ ./scripts/test-cov.sh
```
-#### Writing tests
+### Writing tests
-Most packages in [`/packages`](/packages) have a `test` folder, however some tests might be in other packages or in [`/packages/babel-core`](/packages/babel-core/test/fixtures).
+Most packages in [`/packages`](https://github.com/babel/babel/tree/master/packages) have a `test` folder, however some tests might be in other packages or in [`/packages/babel-core`](https://github.com/babel/babel/tree/master/packages/babel-core/test/fixtures).
-##### `babel-plugin-x`
+#### `babel-plugin-x`
All the Babel plugins (and other packages) that have a `/test/fixtures` are written in a similar way.
-For example, in [`babel-plugin-transform-exponentiation-operator/test`](/packages/babel-plugin-transform-exponentiation-operator/test):
+For example, in [`babel-plugin-transform-exponentiation-operator/test`](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-exponentiation-operator/test):
-- There is an `index.js` file. It imports our [test helper](/packages/babel-helper-plugin-test-runner). (You don't have to worry about this).
-- There can be multiple folders under [`/fixtures`](/packages/babel-plugin-transform-exponentiation-operator/test/fixtures)
- - There is an [`options.json`](/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/options.json) file whose function is similar to a `.babelrc` file, allowing you to pass in the plugins and settings you need for your tests.
+- There is an `index.js` file. It imports our [test helper](https://github.com/babel/babel/tree/master/packages/babel-helper-plugin-test-runner). (You don't have to worry about this).
+- There can be multiple folders under [`/fixtures`](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures)
+ - There is an [`options.json`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/options.json) file whose function is similar to a `.babelrc` file, allowing you to pass in the plugins and settings you need for your tests.
- For this test, we only need the relevant plugin, so it's just `{ "plugins": ["transform-exponentiation-operator"] }`.
- If necessary, you can have an `options.json` with different options in each subfolder.
- In each subfolder, you can organize your directory structure by categories of tests. (Example: these folders can be named after the feature you are testing or can reference the issue number they fix)
- Generally, there are two kinds of tests for plugins
- - The first is a simple test of the input and output produced by running Babel on some code. We do this by creating an [`actual.js`](packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/actual.js) file and an [`expected.js`](/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/expected.js) file.
+ - The first is a simple test of the input and output produced by running Babel on some code. We do this by creating an [`actual.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/actual.js) file and an [`expected.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/expected.js) file.
- If you need to expect an error, you can ignore creating the `expected.js` file and pass a new `throws` key to the `options.json` that contains the error string that is created.
- - The second and preferred type is a test that actually evaluates the produced code and asserts that certain properties are true or false. We do this by creating an [`exec.js`](/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/comprehensive/exec.js) file.
+ - The second and preferred type is a test that actually evaluates the produced code and asserts that certain properties are true or false. We do this by creating an [`exec.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/comprehensive/exec.js) file.
In an actual/expected test, you simply write out the code you want transformed in `actual.js`.
@@ -180,7 +183,7 @@ If you need to check for an error that is thrown you can add to the `options.jso
}
```
-##### Bootstrapping expected output
+#### Bootstrapping expected output
For both `babel-plugin-x` and `babylon`, you can easily generate an `expected.js`/`expected.json` automatically by just providing `actual.js` and running the tests as you usually would.
@@ -196,9 +199,46 @@ For both `babel-plugin-x` and `babylon`, you can easily generate an `expected.js
- expected.json (will be generated if not created)
```
-#### Internals
+### Debugging code
+
+A common approach to debugging JavaScript code is to walk through the code using the [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/) debugger.
+For illustration purposes, we are going to assume that we need to get a better understanding of [`Generator.generate()`](https://github.com/babel/babel/blob/b5246994b57f06af871be6a63dcc4c6fd41d94d6/packages/babel-generator/src/index.js#L32), which is responsible for generating code for a given AST.
+To get a better understanding of what is actually going on for this particular piece of code, we are going to make use of breakpoints.
+
+```diff
+generate() {
++ debugger; // breakpoint
+ return super.generate(this.ast);
+}
+```
+
+To include the changes, we have to make sure to build Babel:
+
+```bash
+$ make build
+```
+
+Next, we need to execute `Generator.generate()`, which can be achieved by running a test case in the `babel-generator` package.
+For example, we can run the test case that tests the generation of class declarations:
+
+```bash
+$ TEST_DEBUG=true TEST_GREP=ClassDeclaration make test-only
+
+./scripts/test.sh
+Debugger listening on port 9229.
+Warning: This is an experimental feature and could change at any time.
+To start debugging, open the following URL in Chrome:
+ chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/3cdaebd2-be88-4e7b-a94b-432950ab72d0
+```
+
+To start the debugging in Chrome DevTools, open the given URL.
+The debugger starts at the first executed line of code, which is Mocha's first line by default.
+Click _Resume script execution_ to jump to the set breakpoint.
+Note that the code shown in Chrome DevTools is compiled code and therefore differs.
+
+## Internals
- AST spec ([babylon/ast/spec.md](https://github.com/babel/babylon/blob/master/ast/spec.md))
-- Versionning ([doc/design/versioning.md](./doc/design/versioning.md))
-- Monorepo ([doc/design/monorepo.md](./doc/design/monorepo.md))
-- Compiler environment support ([doc/design/compiler-environment-support.md](./doc/design/compiler-environment-support.md))
-- Compiler assumptions ([doc/design/compiler-assumptions.md](./doc/design/compiler-assumptions.md))
+- Versioning ([doc/design/versioning.md](https://github.com/babel/babel/blob/master/doc/design/versioning.md)
+- Monorepo ([doc/design/monorepo.md](https://github.com/babel/babel/blob/master/doc/design/monorepo.md))
+- Compiler environment support ([doc/design/compiler-environment-support.md](https://github.com/babel/babel/blob/master/doc/design/compiler-environment-support.md))
+- Compiler assumptions ([doc/design/compiler-assumptions.md](https://github.com/babel/babel/blob/master/doc/design/compiler-assumptions.md))
diff --git a/Makefile b/Makefile
index 823878ed175a3..e1abb3962bd71 100644
--- a/Makefile
+++ b/Makefile
@@ -49,11 +49,11 @@ test-only:
test: lint test-only
test-ci:
- NODE_ENV=test make bootstrap
+ make bootstrap
make test-only
test-ci-coverage:
- NODE_ENV=test BABEL_ENV=cov make bootstrap
+ BABEL_ENV=cov make bootstrap
./scripts/test-cov.sh
./node_modules/.bin/codecov -f coverage/coverage-final.json
diff --git a/README.md b/README.md
index 7987b5b8402dc..b8fe9840efe5a 100644
--- a/README.md
+++ b/README.md
@@ -25,13 +25,13 @@ When your supported environments don't support certain features natively, it wil
```js
// ES2015 arrow function
-[1,2,3].map(n => n + 1);
+[1, 2, 3].map((n) => n + 1);
```
**Out**
```js
-[1,2,3].map(function(n) {
+[1, 2, 3].map(function(n) {
return n + 1;
});
```
@@ -203,6 +203,14 @@ Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
| [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) | [@xtuc](https://github.com/xtuc) |
| [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) | [@svensauleau](https://twitter.com/svensauleau) |
+### Non-Human Members
+
+[](https://github.com/babel-bot) |
+|---|
+| Babel Bot |
+| [@babel-bot](https://github.com/babel-bot) |
+| [@babeljs](https://twitter.com/babeljs) |
+
### Inactive members
[![Amjad Masad](https://avatars.githubusercontent.com/u/587518?s=64)](https://github.com/amasad) | [![James Kyle](https://avatars.githubusercontent.com/u/952783?s=64)](https://github.com/thejameskyle) | [![Jesse McCarthy](https://avatars.githubusercontent.com/u/129203?s=64)](https://github.com/jmm) | [![Sebastian McKenzie](https://avatars.githubusercontent.com/u/853712?s=64)](https://github.com/kittens) (Creator) |
diff --git a/codecov.yml b/codecov.yml
new file mode 100644
index 0000000000000..3e31ee1814b3f
--- /dev/null
+++ b/codecov.yml
@@ -0,0 +1,4 @@
+coverage:
+ parsers:
+ javascript:
+ enable_partials: yes
diff --git a/lerna.json b/lerna.json
index 169db035c12b9..117685b8a5b6e 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,6 +1,6 @@
{
"lerna": "2.0.0-beta.23",
- "version": "6.23.1",
+ "version": "6.24.0",
"changelog": {
"repo": "babel/babel",
"labels": {
diff --git a/package.json b/package.json
index 254cad0ffb8f6..2747f458d21da 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,10 @@
"through2": "^2.0.0",
"uglify-js": "^2.4.16"
},
+ "devEngines": {
+ "node": ">= 0.10 <= 7.x",
+ "npm": "2.x || 3.x || 4.x"
+ },
"babel": {
"comments": false,
"presets": [
diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json
index b2f56d6cfa94c..650754193a56b 100644
--- a/packages/babel-cli/package.json
+++ b/packages/babel-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-cli",
- "version": "6.23.0",
+ "version": "6.24.0",
"description": "Babel command line.",
"author": "Sebastian McKenzie ",
"homepage": "https://babeljs.io/",
@@ -16,8 +16,8 @@
"compiler"
],
"dependencies": {
- "babel-core": "^6.23.0",
- "babel-register": "^6.23.0",
+ "babel-core": "^6.24.0",
+ "babel-register": "^6.24.0",
"babel-polyfill": "^6.23.0",
"babel-runtime": "^6.22.0",
"commander": "^2.8.1",
diff --git a/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js b/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js
new file mode 100644
index 0000000000000..13257ec5e847a
--- /dev/null
+++ b/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js
@@ -0,0 +1 @@
+console.log(process.argv[2]);
diff --git a/packages/babel-cli/test/fixtures/babel-node/arguments/options.json b/packages/babel-cli/test/fixtures/babel-node/arguments/options.json
new file mode 100644
index 0000000000000..5aa934d5550ad
--- /dev/null
+++ b/packages/babel-cli/test/fixtures/babel-node/arguments/options.json
@@ -0,0 +1,4 @@
+{
+ "args": ["bar", "foo"],
+ "stdout": "foo"
+}
diff --git a/packages/babel-core/README.md b/packages/babel-core/README.md
index 5b2f4d53d17c4..ebff1f1837370 100644
--- a/packages/babel-core/README.md
+++ b/packages/babel-core/README.md
@@ -108,8 +108,8 @@ Following is a table of the options you can use:
| `moduleRoot` | `(sourceRoot)` | Optional prefix for the AMD module formatter that will be prepend to the filename on module definitions. |
| `only` | `null` | A [glob](https://github.com/isaacs/minimatch), regex, or mixed array of both, matching paths to **only** compile. Can also be an array of arrays containing paths to explicitly match. When attempting to compile a non-matching file it's returned verbatim. |
| `parserOpts` | `{}` | An object containing the options to be passed down to the babel parser, babylon |
-| `plugins` | `[]` | List of [plugins](/docs/plugins/) to load and use. |
-| `presets` | `[]` | List of [presets](/docs/plugins/#presets) (a set of plugins) to load and use. |
+| `plugins` | `[]` | List of [plugins](https://babeljs.io/docs/plugins/) to load and use. |
+| `presets` | `[]` | List of [presets](https://babeljs.io/docs/plugins/#presets) (a set of plugins) to load and use. |
| `retainLines` | `false` | Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps. (**NOTE:** This will not retain the columns) |
| `resolveModuleSource` | `null` | Resolve a module source ie. `import "SOURCE";` to a custom value. Called as `resolveModuleSource(source, filename)`. |
| `shouldPrintComment` | `null` | An optional callback that controls whether a comment should be output or not. Called as `shouldPrintComment(commentContents)`. **NOTE:** This overrides the `comment` option when used. |
diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json
index f9eecdac84348..782335fc44542 100644
--- a/packages/babel-core/package.json
+++ b/packages/babel-core/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-core",
- "version": "6.23.1",
+ "version": "6.24.0",
"description": "Babel compiler core.",
"author": "Sebastian McKenzie ",
"homepage": "https://babeljs.io/",
@@ -27,12 +27,12 @@
},
"dependencies": {
"babel-code-frame": "^6.22.0",
- "babel-generator": "^6.23.0",
+ "babel-generator": "^6.24.0",
"babel-helpers": "^6.23.0",
"babel-messages": "^6.23.0",
"babel-template": "^6.23.0",
"babel-runtime": "^6.22.0",
- "babel-register": "^6.23.0",
+ "babel-register": "^6.24.0",
"babel-traverse": "^6.23.1",
"babel-types": "^6.23.0",
"babylon": "^6.11.0",
@@ -48,7 +48,7 @@
},
"devDependencies": {
"babel-helper-fixtures": "^6.22.0",
- "babel-helper-transform-fixture-test-runner": "^6.23.0",
+ "babel-helper-transform-fixture-test-runner": "^6.24.0",
"babel-polyfill": "^6.23.0"
}
}
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index f4b25206bcc5a..4746260a36854 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -299,7 +299,7 @@ export default class OptionManager {
(presetLoc || "a preset") + " which does not accept options.");
}
- if (typeof val === "function") val = val(context, options);
+ if (typeof val === "function") val = val(context, options, { dirname });
if (typeof val !== "object") {
throw new Error(`Unsupported preset format: ${val}.`);
diff --git a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js
index a1af16e41fac0..e08f4b1c612d5 100644
--- a/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js
+++ b/packages/babel-core/test/fixtures/resolution/resolve-addons-relative-to-file/node_modules/addons/preset.js
@@ -1,5 +1,10 @@
-module.exports = {
- plugins: [plugin],
+module.exports = function preset (context, options, fileContext) {
+ if (/resolve-addons-relative-to-file$/.test(fileContext.dirname)) {
+ return {
+ plugins: [plugin],
+ };
+ }
+ return {};
};
function plugin () {
diff --git a/packages/babel-generator/README.md b/packages/babel-generator/README.md
index 46a4c051b3053..ff215b753f2a9 100644
--- a/packages/babel-generator/README.md
+++ b/packages/babel-generator/README.md
@@ -39,6 +39,7 @@ quotes | `'single'` or `'double'` | autodetect based on `ast.tok
filename | string | | Used in warning messages
flowCommaSeparator | boolean | `false` | Set to `true` to use commas instead of semicolons as Flow property separators
jsonCompatibleStrings | boolean | `false` | Set to true to run `jsesc` with "json": true to print "\u00A9" vs. "©";
+
Options for source maps:
name | type | default | description
@@ -53,12 +54,7 @@ sourceFileName | string | | The filename for the sourc
In most cases, Babel does a 1:1 transformation of input-file to output-file. However,
you may be dealing with AST constructed from multiple sources - JS files, templates, etc.
If this is the case, and you want the sourcemaps to reflect the correct sources, you'll need
-to make some changes to your code.
-
-First, each node with a `loc` property (which indicates that node's original placement in the
-source document) must also include a `loc.filename` property, set to the source filename.
-
-Second, you should pass an object to `generate` as the `code` parameter. Keys
+to pass an object to `generate` as the `code` parameter. Keys
should be the source filenames, and values should be the source content.
Here's an example of what that might look like:
@@ -69,14 +65,14 @@ import generate from 'babel-generator';
const a = 'var a = 1;';
const b = 'var b = 2;';
-const astA = parse(a, { filename: 'a.js' });
-const astB = parse(b, { filename: 'b.js' });
+const astA = parse(a, { sourceFilename: 'a.js' });
+const astB = parse(b, { sourceFilename: 'b.js' });
const ast = {
type: 'Program',
- body: [].concat(astA.body, ast2.body)
+ body: [].concat(astA.program.body, astB.program.body)
};
-const { code, map } = generate(ast, { /* options */ }, {
+const { code, map } = generate(ast, { sourceMaps: true }, {
'a.js': a,
'b.js': b
});
diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json
index 0212353f434ce..f306ab9665866 100644
--- a/packages/babel-generator/package.json
+++ b/packages/babel-generator/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-generator",
- "version": "6.23.0",
+ "version": "6.24.0",
"description": "Turns an AST into code.",
"author": "Sebastian McKenzie ",
"homepage": "https://babeljs.io/",
diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js
index 71ffe6e9c3f7f..3d6fbae1e21ca 100644
--- a/packages/babel-generator/src/generators/modules.js
+++ b/packages/babel-generator/src/generators/modules.js
@@ -45,12 +45,6 @@ export function ExportAllDeclaration(node: Object) {
this.word("export");
this.space();
this.token("*");
- if (node.exported) {
- this.space();
- this.word("as");
- this.space();
- this.print(node.exported, node);
- }
this.space();
this.word("from");
this.space();
diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js
index 138336546c50f..1d511096d3947 100644
--- a/packages/babel-generator/src/index.js
+++ b/packages/babel-generator/src/index.js
@@ -10,9 +10,7 @@ import type { Format } from "./printer";
*/
class Generator extends Printer {
- constructor(ast, opts, code) {
- opts = opts || {};
-
+ constructor(ast, opts = {}, code) {
const tokens = ast.tokens || [];
const format = normalizeOptions(code, opts, tokens);
const map = opts.sourceMaps ? new SourceMap(opts, code) : null;
@@ -101,7 +99,7 @@ function findCommonStringDelimiter(code, tokens) {
return DEFAULT_STRING_DELIMITER;
}
- const occurences = {
+ const occurrences = {
single: 0,
double: 0
};
@@ -114,15 +112,15 @@ function findCommonStringDelimiter(code, tokens) {
const raw = code.slice(token.start, token.end);
if (raw[0] === "'") {
- occurences.single++;
+ occurrences.single++;
} else {
- occurences.double++;
+ occurrences.double++;
}
checked++;
if (checked >= 3) break;
}
- if (occurences.single > occurences.double) {
+ if (occurrences.single > occurrences.double) {
return "single";
} else {
return "double";
diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js
index 558bceb14c68a..f2ba48d32073a 100644
--- a/packages/babel-generator/src/node/parentheses.js
+++ b/packages/babel-generator/src/node/parentheses.js
@@ -34,28 +34,25 @@ export function NullableTypeAnnotation(node: Object, parent: Object): boolean {
export { NullableTypeAnnotation as FunctionTypeAnnotation };
export function UpdateExpression(node: Object, parent: Object): boolean {
- if (t.isMemberExpression(parent) && parent.object === node) {
- // (foo++).test()
- return true;
- }
-
- return false;
+ // (foo++).test()
+ return t.isMemberExpression(parent) && parent.object === node;
}
export function ObjectExpression(node: Object, parent: Object, printStack: Array