From 69faca0bff0e2c04e6b3be50bba087284c3dbf6b Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 23 Oct 2018 20:54:58 +0200 Subject: [PATCH] Add babel-preset-gatsby (#8724) Part of #6170 This PR adds `babel-preset-gatsby`, a new package that exposes our babel config as a handy preset that we can re-use in all our internal packages as well as in public packages. I've added a new option, `targets`, to overwrite the preset-env targets. You can see the changes in the updated Babel documentation. In #6170, @DSchau mentioned that we want to replace [`babel-loader-helpers`][] with this preset as well (eventually). I'm not really sure what this helper is doing right now so I decided to not touch it. It seems like the helper is used for users of Gatsby. I'm thinking now that my changes to the Babel documentation article should not be made until we also upgrade the above helper to use our preset (e.g. the helper adds `babel-plugin-macros` which is not used in our internal preset). Let me know if I should revert my changes to the article. There are a few other guides that explain a custom babel config. Should I update them as well (test-css-in-js and unit-testing)? [`babel-loader-helpers`]: https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/babel-loader-helpers.js --- .babelrc.js | 4 +- docs/docs/babel.md | 39 +---- docs/docs/testing-css-in-js.md | 8 +- docs/docs/unit-testing.md | 8 +- jest-transformer.js | 3 +- package.json | 6 - .../.babelrc | 2 +- .../babel-preset-gatsby-package/.gitignore | 2 + .../babel-preset-gatsby-package/.npmignore | 34 +++++ .../babel-preset-gatsby-package/README.md | 40 +++++ .../babel-preset-gatsby-package/package.json | 15 ++ .../src/__tests__/index.js | 138 ++++++++++++++++++ .../babel-preset-gatsby-package/src/index.js | 22 +-- packages/babel-preset-gatsby/.babelrc | 6 + packages/babel-preset-gatsby/.gitignore | 2 + packages/babel-preset-gatsby/.npmignore | 34 +++++ packages/babel-preset-gatsby/README.md | 36 +++++ packages/babel-preset-gatsby/package.json | 20 +++ .../src/__tests__/index.js | 119 +++++++++++++++ packages/babel-preset-gatsby/src/index.js | 74 ++++++++++ packages/gatsby-cli/.babelrc | 2 +- packages/gatsby-codemods/.babelrc | 2 +- packages/gatsby-dev-cli/.babelrc | 2 +- packages/gatsby-image/.babelrc | 2 +- packages/gatsby-link/.babelrc | 2 +- .../gatsby-plugin-canonical-urls/.babelrc | 2 +- packages/gatsby-plugin-catch-links/.babelrc | 2 +- packages/gatsby-plugin-coffeescript/.babelrc | 2 +- .../.babelrc | 2 +- packages/gatsby-plugin-emotion/.babelrc | 2 +- .../gatsby-plugin-facebook-analytics/.babelrc | 2 +- packages/gatsby-plugin-feed/.babelrc | 2 +- packages/gatsby-plugin-fullstory/.babelrc | 2 +- packages/gatsby-plugin-glamor/.babelrc | 2 +- .../gatsby-plugin-google-analytics/.babelrc | 2 +- .../gatsby-plugin-google-tagmanager/.babelrc | 2 +- packages/gatsby-plugin-guess-js/.babelrc | 2 +- packages/gatsby-plugin-jss/.babelrc | 2 +- packages/gatsby-plugin-layout/.babelrc | 2 +- packages/gatsby-plugin-less/.babelrc | 2 +- packages/gatsby-plugin-lodash/.babelrc | 2 +- packages/gatsby-plugin-manifest/.babelrc | 2 +- packages/gatsby-plugin-netlify-cms/.babelrc | 2 +- packages/gatsby-plugin-netlify/.babelrc | 2 +- packages/gatsby-plugin-nprogress/.babelrc | 2 +- packages/gatsby-plugin-offline/.babelrc | 2 +- packages/gatsby-plugin-page-creator/.babelrc | 2 +- packages/gatsby-plugin-postcss/.babelrc | 2 +- packages/gatsby-plugin-preact/.babelrc | 2 +- .../gatsby-plugin-react-css-modules/.babelrc | 2 +- packages/gatsby-plugin-react-helmet/.babelrc | 2 +- .../.babelrc | 2 +- packages/gatsby-plugin-sass/.babelrc | 2 +- packages/gatsby-plugin-sharp/.babelrc | 2 +- packages/gatsby-plugin-sitemap/.babelrc | 2 +- .../gatsby-plugin-styled-components/.babelrc | 2 +- packages/gatsby-plugin-styled-jsx/.babelrc | 2 +- packages/gatsby-plugin-styletron/.babelrc | 2 +- packages/gatsby-plugin-stylus/.babelrc | 2 +- packages/gatsby-plugin-subfont/.babelrc | 2 +- packages/gatsby-plugin-twitter/.babelrc | 2 +- packages/gatsby-plugin-typescript/.babelrc | 2 +- packages/gatsby-plugin-typography/.babelrc | 2 +- packages/gatsby-react-router-scroll/.babelrc | 2 +- .../gatsby-remark-autolink-headers/.babelrc | 2 +- packages/gatsby-remark-code-repls/.babelrc | 2 +- .../gatsby-remark-copy-linked-files/.babelrc | 2 +- packages/gatsby-remark-custom-blocks/.babelrc | 2 +- packages/gatsby-remark-embed-snippet/.babelrc | 2 +- packages/gatsby-remark-graphviz/.babelrc | 2 +- packages/gatsby-remark-images/.babelrc | 2 +- packages/gatsby-remark-katex/.babelrc | 2 +- packages/gatsby-remark-prismjs/.babelrc | 2 +- .../gatsby-remark-responsive-iframe/.babelrc | 2 +- packages/gatsby-remark-smartypants/.babelrc | 2 +- packages/gatsby-source-contentful/.babelrc | 2 +- packages/gatsby-source-drupal/.babelrc | 2 +- packages/gatsby-source-faker/.babelrc | 2 +- packages/gatsby-source-filesystem/.babelrc | 2 +- packages/gatsby-source-graphql/.babelrc | 2 +- packages/gatsby-source-hacker-news/.babelrc | 2 +- packages/gatsby-source-lever/.babelrc | 2 +- packages/gatsby-source-medium/.babelrc | 2 +- packages/gatsby-source-mongodb/.babelrc | 2 +- .../gatsby-source-npm-package-search/.babelrc | 2 +- packages/gatsby-source-wikipedia/.babelrc | 2 +- packages/gatsby-source-wordpress/.babelrc | 2 +- packages/gatsby-transformer-csv/.babelrc | 2 +- .../.babelrc | 2 +- packages/gatsby-transformer-excel/.babelrc | 2 +- packages/gatsby-transformer-hjson/.babelrc | 2 +- .../.babelrc | 2 +- .../.babelrc | 2 +- packages/gatsby-transformer-json/.babelrc | 2 +- packages/gatsby-transformer-pdf/.babelrc | 4 +- .../gatsby-transformer-react-docgen/.babelrc | 2 +- packages/gatsby-transformer-remark/.babelrc | 2 +- .../gatsby-transformer-screenshot/.babelrc | 2 +- packages/gatsby-transformer-sharp/.babelrc | 2 +- packages/gatsby-transformer-sqip/.babelrc | 2 +- packages/gatsby-transformer-toml/.babelrc | 2 +- packages/gatsby-transformer-xml/.babelrc | 2 +- packages/gatsby-transformer-yaml/.babelrc | 2 +- packages/gatsby/package.json | 12 +- .../__tests__/__snapshots__/babelrc.js.snap | 62 +------- .../gatsby/src/utils/babel-loader-helpers.js | 88 +---------- packages/gatsby/src/utils/babel-loader.js | 3 +- packages/graphql-skip-limit/.babelrc | 2 +- plop-templates/package/.babelrc.hbs | 2 +- yarn.lock | 9 +- 110 files changed, 644 insertions(+), 314 deletions(-) create mode 100644 packages/babel-preset-gatsby-package/.gitignore create mode 100644 packages/babel-preset-gatsby-package/.npmignore create mode 100644 packages/babel-preset-gatsby-package/README.md create mode 100644 packages/babel-preset-gatsby-package/package.json create mode 100644 packages/babel-preset-gatsby-package/src/__tests__/index.js rename .babel-preset.js => packages/babel-preset-gatsby-package/src/index.js (58%) create mode 100644 packages/babel-preset-gatsby/.babelrc create mode 100644 packages/babel-preset-gatsby/.gitignore create mode 100644 packages/babel-preset-gatsby/.npmignore create mode 100644 packages/babel-preset-gatsby/README.md create mode 100644 packages/babel-preset-gatsby/package.json create mode 100644 packages/babel-preset-gatsby/src/__tests__/index.js create mode 100644 packages/babel-preset-gatsby/src/index.js diff --git a/.babelrc.js b/.babelrc.js index 666c1a0efb70a..4eb42997a778d 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -6,10 +6,8 @@ if (process.env.NODE_ENV !== `test`) { ignore.push(`**/__tests__`) } -const presetAbsPath = require(`path`).join(__dirname, '.babel-preset.js') - module.exports = { sourceMaps: true, - presets: [presetAbsPath], + presets: ["babel-preset-gatsby-package"], ignore, } diff --git a/docs/docs/babel.md b/docs/docs/babel.md index 422101fff18f1..de043dab5d5c2 100644 --- a/docs/docs/babel.md +++ b/docs/docs/babel.md @@ -22,48 +22,25 @@ browsers. ## How to use a custom .babelrc file Gatsby ships with a default .babelrc setup that should work for most sites. If you'd like -to add custom Babel presets or plugins, we recommend copying our default .babelrc below -to the root of your site and modifying it per your needs. +to add custom Babel presets or plugins, you can create your own `.babelrc` at the root of your site, import [`babel-preset-gatsby`](https://github.com/gatsbyjs/gatsby/tree/master/packages/babel-preset-gatsby), and overwrite the `target` option. + +```bash +npm install --save babel-preset-gatsby +``` ```json5:title=.babelrc { presets: [ [ - "@babel/preset-env", + "babel-preset-gatsby", { - loose: true, - modules: false, - useBuiltIns: "usage", - shippedProposals: true, targets: { browsers: [">0.25%", "not dead"], }, }, ], - [ - "@babel/preset-react", - { - useBuiltIns: true, - pragma: "React.createElement", - }, - ], - ], - plugins: [ - [ - "@babel/plugin-proposal-class-properties", - { - loose: true, - }, - ], - "@babel/plugin-syntax-dynamic-import", - "babel-plugin-macros", - [ - "@babel/plugin-transform-runtime", - { - helpers: true, - regenerator: true, - }, - ], ], } ``` + +For more advanced configurations, you can also copy the defaults from [`babel-preset-gatsby`](https://github.com/gatsbyjs/gatsby/tree/master/packages/babel-preset-gatsby) and customize them to suit your needs. diff --git a/docs/docs/testing-css-in-js.md b/docs/docs/testing-css-in-js.md index 5894105407a15..0901e7c95e4ba 100644 --- a/docs/docs/testing-css-in-js.md +++ b/docs/docs/testing-css-in-js.md @@ -22,12 +22,10 @@ If you followed along with the [Unit testing guide](/docs/unit-testing) you'll h ```diff:title=jest-preprocess.js const babelOptions = { - presets: ["@babel/react", "@babel/env"], - plugins: [ + presets: ["babel-preset-gatsby"], ++ plugins: [ + "emotion", - "@babel/plugin-proposal-optional-chaining", - "@babel/plugin-proposal-class-properties", - ], ++ ], } module.exports = require("babel-jest").createTransformer(babelOptions) diff --git a/docs/docs/unit-testing.md b/docs/docs/unit-testing.md index a81df3dd403a8..143d68aa505ef 100644 --- a/docs/docs/unit-testing.md +++ b/docs/docs/unit-testing.md @@ -22,7 +22,7 @@ First you need to install Jest and some more required packages. You need to install Babel 7 as it's required by Jest. ```sh -npm install --save-dev jest babel-jest react-test-renderer identity-obj-proxy 'babel-core@^7.0.0-0' @babel/core @babel/preset-env @babel/preset-react @babel/plugin-proposal-class-properties @babel/plugin-proposal-optional-chaining +npm install --save-dev jest babel-jest react-test-renderer identity-obj-proxy 'babel-core@^7.0.0-0' @babel/core babel-preset-gatsby ``` Because Gatsby handles its own Babel configuration, you will need to manually @@ -61,11 +61,7 @@ with a minimal config. ```js:title=jest-preprocess.js const babelOptions = { - presets: ["@babel/react", "@babel/env"], - plugins: [ - "@babel/plugin-proposal-optional-chaining", - "@babel/plugin-proposal-class-properties", - ], + presets: ["babel-preset-gatsby"], } module.exports = require("babel-jest").createTransformer(babelOptions) diff --git a/jest-transformer.js b/jest-transformer.js index 9db14942ed204..072aba2e1ecc4 100644 --- a/jest-transformer.js +++ b/jest-transformer.js @@ -1,3 +1,2 @@ -const presetAbsPath = require(`path`).join(__dirname, `.babel-preset.js`) -const babelPreset = require(presetAbsPath)() +const babelPreset = require(`babel-preset-gatsby-package`)() module.exports = require(`babel-jest`).createTransformer(babelPreset) diff --git a/package.json b/package.json index b2a6a52762463..4e859e90b1aae 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,6 @@ "devDependencies": { "@babel/core": "^7.0.0", "@babel/node": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.0.0", "babel-core": "7.0.0-bridge.0", "babel-eslint": "8.2.1", diff --git a/packages/babel-plugin-remove-graphql-queries/.babelrc b/packages/babel-plugin-remove-graphql-queries/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/babel-plugin-remove-graphql-queries/.babelrc +++ b/packages/babel-plugin-remove-graphql-queries/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/babel-preset-gatsby-package/.gitignore b/packages/babel-preset-gatsby-package/.gitignore new file mode 100644 index 0000000000000..2132b55e6405e --- /dev/null +++ b/packages/babel-preset-gatsby-package/.gitignore @@ -0,0 +1,2 @@ +/*.js +yarn.lock diff --git a/packages/babel-preset-gatsby-package/.npmignore b/packages/babel-preset-gatsby-package/.npmignore new file mode 100644 index 0000000000000..e771d2c9fa299 --- /dev/null +++ b/packages/babel-preset-gatsby-package/.npmignore @@ -0,0 +1,34 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules +*.un~ +yarn.lock +src +flow-typed +coverage +decls +examples diff --git a/packages/babel-preset-gatsby-package/README.md b/packages/babel-preset-gatsby-package/README.md new file mode 100644 index 0000000000000..2c0de3cc36638 --- /dev/null +++ b/packages/babel-preset-gatsby-package/README.md @@ -0,0 +1,40 @@ +# babel-preset-gatsby-package + +This [Babel](https://babeljs.io/) preset is used for our internal packages. If you're looking for the preset a **Gatsby Site** can use, please refer to [babel-preset-gatsby](https://github.com/gatsbyjs/gatsby/blob/master/packages/babel-preset-gatsby/README.md) instead. + +## Packages + +- [`@babel/preset-env`](https://babeljs.io/docs/en/babel-preset-env) +- [`@babel/preset-react`](https://babeljs.io/docs/en/babel-preset-react) +- [`@babel/preset-flow`](https://babeljs.io/docs/en/babel-preset-flow) +- [`@babel/plugin-proposal-class-properties`](https://babeljs.io/docs/en/babel-plugin-proposal-class-properties) +- [`@babel/plugin-proposal-optional-chaining`](https://babeljs.io/docs/en/babel-plugin-proposal-optional-chaining) +- [`@babel/plugin-transform-runtime`](https://babeljs.io/docs/en/babel-plugin-transform-runtime#docsNav) + +## Usage + +Install `babel-preset-gatsby-package` and add a `.babelrc` file with the following content to the root of your project: + +```bash +npm install --dev babel-preset-gatsby-package +``` + +```json +{ + "presets": ["babel-preset-gatsby-package"] +} +``` + +## Options + +### `browser` + +`boolean`, defaults to `false`. + +Defines if [`@babel/preset-env`](https://babeljs.io/docs/en/babel-preset-env) is configured to target browsers or Node.js environments. + +### `debug` + +`boolean`, defaults to `false`. + +Outputs the targets/plugins used and the version specified in [plugin data version](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/plugins.json) to `console.log`. diff --git a/packages/babel-preset-gatsby-package/package.json b/packages/babel-preset-gatsby-package/package.json new file mode 100644 index 0000000000000..99f0de59ed992 --- /dev/null +++ b/packages/babel-preset-gatsby-package/package.json @@ -0,0 +1,15 @@ +{ + "name": "babel-preset-gatsby-package", + "version": "0.1.0", + "author": "Philipp Spiess ", + "dependencies": { + "@babel/preset-env": "^7.0.0", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0" + }, + "license": "MIT", + "main": "src/index.js" +} diff --git a/packages/babel-preset-gatsby-package/src/__tests__/index.js b/packages/babel-preset-gatsby-package/src/__tests__/index.js new file mode 100644 index 0000000000000..85383b585352a --- /dev/null +++ b/packages/babel-preset-gatsby-package/src/__tests__/index.js @@ -0,0 +1,138 @@ +const preset = require(`../`) +const path = require(`path`) + +it(`Specifies proper presets and plugins in Node mode`, () => { + const { presets, plugins } = preset() + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + debug: false, + loose: true, + modules: `commonjs`, + shippedProposals: true, + targets: { + node: `current`, + }, + useBuiltIns: `entry`, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { development: true }, + ], + expect.stringContaining(path.join(`@babel`, `preset-flow`)), + ]) + expect(plugins).toEqual([ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-optional-chaining`) + ), + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + ]) +}) + +it(`Specifies proper presets and plugins in debug Node mode`, () => { + const { presets, plugins } = preset(null, { debug: true }) + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + debug: true, + loose: true, + modules: `commonjs`, + shippedProposals: true, + targets: { + node: `current`, + }, + useBuiltIns: `entry`, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { development: true }, + ], + expect.stringContaining(path.join(`@babel`, `preset-flow`)), + ]) + expect(plugins).toEqual([ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-optional-chaining`) + ), + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + ]) +}) + +it(`Specifies proper presets and plugins in browser mode`, () => { + const { presets, plugins } = preset(null, { browser: true }) + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + debug: false, + loose: true, + modules: `commonjs`, + shippedProposals: true, + targets: { + browsers: [`last 2 versions`, `not ie <= 11`, `not android 4.4.3`], + }, + useBuiltIns: false, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { development: true }, + ], + expect.stringContaining(path.join(`@babel`, `preset-flow`)), + ]) + expect(plugins).toEqual([ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-optional-chaining`) + ), + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + ]) +}) + +it(`Specifies proper presets and plugins in debug browser mode`, () => { + const { presets, plugins } = preset(null, { browser: true, debug: true }) + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + debug: true, + loose: true, + modules: `commonjs`, + shippedProposals: true, + targets: { + browsers: [`last 2 versions`, `not ie <= 11`, `not android 4.4.3`], + }, + useBuiltIns: false, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { development: true }, + ], + expect.stringContaining(path.join(`@babel`, `preset-flow`)), + ]) + expect(plugins).toEqual([ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-optional-chaining`) + ), + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + ]) +}) diff --git a/.babel-preset.js b/packages/babel-preset-gatsby-package/src/index.js similarity index 58% rename from .babel-preset.js rename to packages/babel-preset-gatsby-package/src/index.js index 5dd3ad55e929e..e99090ca18cf5 100644 --- a/.babel-preset.js +++ b/packages/babel-preset-gatsby-package/src/index.js @@ -4,45 +4,45 @@ function preset(context, options = {}) { const { browser = false, debug = false } = options const { NODE_ENV, BABEL_ENV } = process.env - const PRODUCTION = (BABEL_ENV || NODE_ENV) === "production" + const PRODUCTION = (BABEL_ENV || NODE_ENV) === `production` const browserConfig = { useBuiltIns: false, targets: { browsers: PRODUCTION - ? [`last 4 versions`, `safari >= 7`, "ie >= 9"] + ? [`last 4 versions`, `safari >= 7`, `ie >= 9`] : [`last 2 versions`, `not ie <= 11`, `not android 4.4.3`], }, } const nodeConfig = { targets: { - node: PRODUCTION ? 6.0 : "current", + node: PRODUCTION ? 6.0 : `current`, }, } return { presets: [ [ - r("@babel/preset-env"), + r(`@babel/preset-env`), Object.assign( { loose: true, debug: !!debug, - useBuiltIns: "entry", + useBuiltIns: `entry`, shippedProposals: true, - modules: "commonjs", + modules: `commonjs`, }, browser ? browserConfig : nodeConfig ), ], - [r("@babel/preset-react"), { development: !PRODUCTION }], - r("@babel/preset-flow"), + [r(`@babel/preset-react`), { development: !PRODUCTION }], + r(`@babel/preset-flow`), ], plugins: [ - r("@babel/plugin-proposal-class-properties"), - r("@babel/plugin-proposal-optional-chaining"), - r("@babel/plugin-transform-runtime"), + r(`@babel/plugin-proposal-class-properties`), + r(`@babel/plugin-proposal-optional-chaining`), + r(`@babel/plugin-transform-runtime`), ], } } diff --git a/packages/babel-preset-gatsby/.babelrc b/packages/babel-preset-gatsby/.babelrc new file mode 100644 index 0000000000000..837b17615376b --- /dev/null +++ b/packages/babel-preset-gatsby/.babelrc @@ -0,0 +1,6 @@ +{ + "presets": [ + ["babel-preset-gatsby-package"] + ] +} + diff --git a/packages/babel-preset-gatsby/.gitignore b/packages/babel-preset-gatsby/.gitignore new file mode 100644 index 0000000000000..2132b55e6405e --- /dev/null +++ b/packages/babel-preset-gatsby/.gitignore @@ -0,0 +1,2 @@ +/*.js +yarn.lock diff --git a/packages/babel-preset-gatsby/.npmignore b/packages/babel-preset-gatsby/.npmignore new file mode 100644 index 0000000000000..e771d2c9fa299 --- /dev/null +++ b/packages/babel-preset-gatsby/.npmignore @@ -0,0 +1,34 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules +*.un~ +yarn.lock +src +flow-typed +coverage +decls +examples diff --git a/packages/babel-preset-gatsby/README.md b/packages/babel-preset-gatsby/README.md new file mode 100644 index 0000000000000..3ae2a068c33e7 --- /dev/null +++ b/packages/babel-preset-gatsby/README.md @@ -0,0 +1,36 @@ +# babel-preset-gatsby + +Gatsby uses the phenomenal project [Babel](https://babeljs.io/) to enable support for writing modern JavaScript — while still supporting older browsers. This package contains the default Babel setup for all Gatsby projects. + +For more information on how to customize the Babel configuration of your Gatsby site, check out [our documentation](https://www.gatsbyjs.org/docs/babel/). + +## Packages + +- [`@babel/preset-env`](https://babeljs.io/docs/en/babel-preset-env) +- [`@babel/preset-react`](https://babeljs.io/docs/en/babel-preset-react) +- [`@babel/plugin-proposal-class-properties`](https://babeljs.io/docs/en/babel-plugin-proposal-class-properties) +- [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) +- [`@babel/plugin-proposal-optional-chaining`](https://babeljs.io/docs/en/babel-plugin-proposal-optional-chaining) +- [`@babel/plugin-transform-runtime`](https://babeljs.io/docs/en/babel-plugin-transform-runtime#docsNav) + +## Usage + +Install `babel-preset-gatsby` and add a `.babelrc` file with the following content to the root of your project: + +```bash +npm install --dev babel-preset-gatsby +``` + +```json +{ + "presets": ["babel-preset-gatsby"] +} +``` + +## Options + +### `targets` + +`{ [string]: number | string }`, defaults to `{ "browsers": ["last 4 versions", "safari >= 7", "ie >= 9"] }` in production and `{ "browsers": ["last 2 versions", "not ie <= 11", "not android 4.4.3"] }` in development when targeting the browser and `{ "node": 6 }` in production and `{ "node": "current" }` in development when targeting Node.js. + +Use this option to configure [custom target browsers](https://www.gatsbyjs.org/docs/babel/). diff --git a/packages/babel-preset-gatsby/package.json b/packages/babel-preset-gatsby/package.json new file mode 100644 index 0000000000000..4c424473d440a --- /dev/null +++ b/packages/babel-preset-gatsby/package.json @@ -0,0 +1,20 @@ +{ + "name": "babel-preset-gatsby", + "version": "0.1.0", + "author": "Philipp Spiess ", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "babel-plugin-macros": "^2.4.2" + }, + "license": "MIT", + "main": "index.js", + "scripts": { + "build": "babel src --out-dir . --ignore **/__tests__", + "prepare": "cross-env NODE_ENV=production npm run build", + "watch": "babel -w src --out-dir . --ignore **/__tests__" + } +} diff --git a/packages/babel-preset-gatsby/src/__tests__/index.js b/packages/babel-preset-gatsby/src/__tests__/index.js new file mode 100644 index 0000000000000..e4725eb6780e5 --- /dev/null +++ b/packages/babel-preset-gatsby/src/__tests__/index.js @@ -0,0 +1,119 @@ +const preset = require(`../`) +const path = require(`path`) + +it(`Specifies proper presets and plugins for test stage`, () => { + const { presets, plugins } = preset() + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + loose: true, + modules: false, + useBuiltIns: `usage`, + targets: { + browsers: undefined, + }, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { + development: false, + pragma: `React.createElement`, + useBuiltIns: true, + }, + ], + ]) + expect(plugins).toEqual([ + [ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + { loose: true }, + ], + expect.stringContaining(`babel-plugin-macros`), + expect.stringContaining( + path.join(`@babel`, `plugin-syntax-dynamic-import`) + ), + [ + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + { + helpers: true, + regenerator: true, + }, + ], + ]) +}) + +it(`Specifies proper presets and plugins for build-html stage`, () => { + const currentGatsbyBuildStage = process.env.GATSBY_BUILD_STAGE + let presets, plugins + try { + process.env.GATSBY_BUILD_STAGE = `build-html` + const config = preset() + presets = config.presets + plugins = config.plugins + } finally { + process.env.GATSBY_BUILD_STAGE = currentGatsbyBuildStage + } + + expect(presets).toEqual([ + [ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + loose: true, + modules: false, + useBuiltIns: `usage`, + targets: { + node: `current`, + }, + }, + ], + [ + expect.stringContaining(path.join(`@babel`, `preset-react`)), + { + development: false, + pragma: `React.createElement`, + useBuiltIns: true, + }, + ], + ]) + expect(plugins).toEqual([ + [ + expect.stringContaining( + path.join(`@babel`, `plugin-proposal-class-properties`) + ), + { loose: true }, + ], + expect.stringContaining(`babel-plugin-macros`), + expect.stringContaining( + path.join(`@babel`, `plugin-syntax-dynamic-import`) + ), + [ + expect.stringContaining(path.join(`@babel`, `plugin-transform-runtime`)), + { + helpers: true, + regenerator: true, + }, + ], + ]) +}) + +it(`Allows to configure browser targets`, () => { + const { presets } = preset(null, { + targets: { browsers: [`last 1 version`] }, + }) + + expect(presets[0]).toEqual([ + expect.stringContaining(path.join(`@babel`, `preset-env`)), + { + loose: true, + modules: false, + useBuiltIns: `usage`, + targets: { + browsers: [`last 1 version`], + }, + }, + ]) +}) diff --git a/packages/babel-preset-gatsby/src/index.js b/packages/babel-preset-gatsby/src/index.js new file mode 100644 index 0000000000000..1a195553df52a --- /dev/null +++ b/packages/babel-preset-gatsby/src/index.js @@ -0,0 +1,74 @@ +const path = require(`path`) + +const r = m => require.resolve(m) + +const loadCachedConfig = () => { + let pluginBabelConfig = {} + if (process.env.NODE_ENV !== `test`) { + pluginBabelConfig = require(path.join( + process.cwd(), + `./.cache/babelState.json` + )) + } + return pluginBabelConfig +} + +function preset(context, options = {}) { + let { targets = null } = options + + const pluginBabelConfig = loadCachedConfig() + const stage = process.env.GATSBY_BUILD_STAGE || `test` + + if (!targets) { + if (stage === `build-html`) { + targets = { + node: `current`, + } + } else { + targets = { + browsers: pluginBabelConfig.browserslist, + } + } + } + + return { + presets: [ + [ + r(`@babel/preset-env`), + { + loose: true, + modules: false, + useBuiltIns: `usage`, + targets, + }, + ], + [ + r(`@babel/preset-react`), + { + useBuiltIns: true, + pragma: `React.createElement`, + development: stage === `develop`, + }, + ], + ], + plugins: [ + [ + r(`@babel/plugin-proposal-class-properties`), + { + loose: true, + }, + ], + r(`babel-plugin-macros`), + r(`@babel/plugin-syntax-dynamic-import`), + [ + r(`@babel/plugin-transform-runtime`), + { + helpers: true, + regenerator: true, + }, + ], + ], + } +} + +module.exports = preset diff --git a/packages/gatsby-cli/.babelrc b/packages/gatsby-cli/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-cli/.babelrc +++ b/packages/gatsby-cli/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-codemods/.babelrc b/packages/gatsby-codemods/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-codemods/.babelrc +++ b/packages/gatsby-codemods/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-dev-cli/.babelrc b/packages/gatsby-dev-cli/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-dev-cli/.babelrc +++ b/packages/gatsby-dev-cli/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-image/.babelrc b/packages/gatsby-image/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-image/.babelrc +++ b/packages/gatsby-image/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-link/.babelrc b/packages/gatsby-link/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-link/.babelrc +++ b/packages/gatsby-link/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-canonical-urls/.babelrc b/packages/gatsby-plugin-canonical-urls/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-canonical-urls/.babelrc +++ b/packages/gatsby-plugin-canonical-urls/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-catch-links/.babelrc b/packages/gatsby-plugin-catch-links/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-catch-links/.babelrc +++ b/packages/gatsby-plugin-catch-links/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-coffeescript/.babelrc b/packages/gatsby-plugin-coffeescript/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-coffeescript/.babelrc +++ b/packages/gatsby-plugin-coffeescript/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-create-client-paths/.babelrc b/packages/gatsby-plugin-create-client-paths/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-create-client-paths/.babelrc +++ b/packages/gatsby-plugin-create-client-paths/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-emotion/.babelrc b/packages/gatsby-plugin-emotion/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-emotion/.babelrc +++ b/packages/gatsby-plugin-emotion/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-facebook-analytics/.babelrc b/packages/gatsby-plugin-facebook-analytics/.babelrc index 9235a2c260ca8..31043522b2321 100644 --- a/packages/gatsby-plugin-facebook-analytics/.babelrc +++ b/packages/gatsby-plugin-facebook-analytics/.babelrc @@ -1,3 +1,3 @@ { - "presets": [["../../.babel-preset.js", { "browser": true }]] + "presets": [["babel-preset-gatsby-package", { "browser": true }]] } diff --git a/packages/gatsby-plugin-feed/.babelrc b/packages/gatsby-plugin-feed/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-feed/.babelrc +++ b/packages/gatsby-plugin-feed/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-fullstory/.babelrc b/packages/gatsby-plugin-fullstory/.babelrc index 9235a2c260ca8..31043522b2321 100644 --- a/packages/gatsby-plugin-fullstory/.babelrc +++ b/packages/gatsby-plugin-fullstory/.babelrc @@ -1,3 +1,3 @@ { - "presets": [["../../.babel-preset.js", { "browser": true }]] + "presets": [["babel-preset-gatsby-package", { "browser": true }]] } diff --git a/packages/gatsby-plugin-glamor/.babelrc b/packages/gatsby-plugin-glamor/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-glamor/.babelrc +++ b/packages/gatsby-plugin-glamor/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-google-analytics/.babelrc b/packages/gatsby-plugin-google-analytics/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-google-analytics/.babelrc +++ b/packages/gatsby-plugin-google-analytics/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-google-tagmanager/.babelrc b/packages/gatsby-plugin-google-tagmanager/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-google-tagmanager/.babelrc +++ b/packages/gatsby-plugin-google-tagmanager/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-guess-js/.babelrc b/packages/gatsby-plugin-guess-js/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-plugin-guess-js/.babelrc +++ b/packages/gatsby-plugin-guess-js/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-jss/.babelrc b/packages/gatsby-plugin-jss/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-jss/.babelrc +++ b/packages/gatsby-plugin-jss/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-layout/.babelrc b/packages/gatsby-plugin-layout/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-plugin-layout/.babelrc +++ b/packages/gatsby-plugin-layout/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-less/.babelrc b/packages/gatsby-plugin-less/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-less/.babelrc +++ b/packages/gatsby-plugin-less/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-lodash/.babelrc b/packages/gatsby-plugin-lodash/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-lodash/.babelrc +++ b/packages/gatsby-plugin-lodash/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-manifest/.babelrc b/packages/gatsby-plugin-manifest/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-manifest/.babelrc +++ b/packages/gatsby-plugin-manifest/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-netlify-cms/.babelrc b/packages/gatsby-plugin-netlify-cms/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-plugin-netlify-cms/.babelrc +++ b/packages/gatsby-plugin-netlify-cms/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-netlify/.babelrc b/packages/gatsby-plugin-netlify/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-netlify/.babelrc +++ b/packages/gatsby-plugin-netlify/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-nprogress/.babelrc b/packages/gatsby-plugin-nprogress/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-nprogress/.babelrc +++ b/packages/gatsby-plugin-nprogress/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-offline/.babelrc b/packages/gatsby-plugin-offline/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-offline/.babelrc +++ b/packages/gatsby-plugin-offline/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-page-creator/.babelrc b/packages/gatsby-plugin-page-creator/.babelrc index f79d788caba2c..edfe6156a1a5b 100644 --- a/packages/gatsby-plugin-page-creator/.babelrc +++ b/packages/gatsby-plugin-page-creator/.babelrc @@ -1,3 +1,3 @@ { - presets: [["../../.babel-preset.js", { browser: true }]], + presets: [["babel-preset-gatsby-package", { browser: true }]], } diff --git a/packages/gatsby-plugin-postcss/.babelrc b/packages/gatsby-plugin-postcss/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-postcss/.babelrc +++ b/packages/gatsby-plugin-postcss/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-preact/.babelrc b/packages/gatsby-plugin-preact/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-plugin-preact/.babelrc +++ b/packages/gatsby-plugin-preact/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-react-css-modules/.babelrc b/packages/gatsby-plugin-react-css-modules/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-react-css-modules/.babelrc +++ b/packages/gatsby-plugin-react-css-modules/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-react-helmet/.babelrc b/packages/gatsby-plugin-react-helmet/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-react-helmet/.babelrc +++ b/packages/gatsby-plugin-react-helmet/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-remove-trailing-slashes/.babelrc b/packages/gatsby-plugin-remove-trailing-slashes/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-remove-trailing-slashes/.babelrc +++ b/packages/gatsby-plugin-remove-trailing-slashes/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-sass/.babelrc b/packages/gatsby-plugin-sass/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-sass/.babelrc +++ b/packages/gatsby-plugin-sass/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-sharp/.babelrc b/packages/gatsby-plugin-sharp/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-sharp/.babelrc +++ b/packages/gatsby-plugin-sharp/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-sitemap/.babelrc b/packages/gatsby-plugin-sitemap/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-sitemap/.babelrc +++ b/packages/gatsby-plugin-sitemap/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-styled-components/.babelrc b/packages/gatsby-plugin-styled-components/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-styled-components/.babelrc +++ b/packages/gatsby-plugin-styled-components/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-styled-jsx/.babelrc b/packages/gatsby-plugin-styled-jsx/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-styled-jsx/.babelrc +++ b/packages/gatsby-plugin-styled-jsx/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-styletron/.babelrc b/packages/gatsby-plugin-styletron/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-plugin-styletron/.babelrc +++ b/packages/gatsby-plugin-styletron/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-stylus/.babelrc b/packages/gatsby-plugin-stylus/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-stylus/.babelrc +++ b/packages/gatsby-plugin-stylus/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-subfont/.babelrc b/packages/gatsby-plugin-subfont/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-subfont/.babelrc +++ b/packages/gatsby-plugin-subfont/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-twitter/.babelrc b/packages/gatsby-plugin-twitter/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-twitter/.babelrc +++ b/packages/gatsby-plugin-twitter/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-plugin-typescript/.babelrc b/packages/gatsby-plugin-typescript/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-plugin-typescript/.babelrc +++ b/packages/gatsby-plugin-typescript/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-plugin-typography/.babelrc b/packages/gatsby-plugin-typography/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-plugin-typography/.babelrc +++ b/packages/gatsby-plugin-typography/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-react-router-scroll/.babelrc b/packages/gatsby-react-router-scroll/.babelrc index 201b1bdc8da7c..e437418264e89 100644 --- a/packages/gatsby-react-router-scroll/.babelrc +++ b/packages/gatsby-react-router-scroll/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ], "plugins": ["dev-expression"] } diff --git a/packages/gatsby-remark-autolink-headers/.babelrc b/packages/gatsby-remark-autolink-headers/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-remark-autolink-headers/.babelrc +++ b/packages/gatsby-remark-autolink-headers/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-remark-code-repls/.babelrc b/packages/gatsby-remark-code-repls/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-remark-code-repls/.babelrc +++ b/packages/gatsby-remark-code-repls/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-remark-copy-linked-files/.babelrc b/packages/gatsby-remark-copy-linked-files/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-copy-linked-files/.babelrc +++ b/packages/gatsby-remark-copy-linked-files/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-custom-blocks/.babelrc b/packages/gatsby-remark-custom-blocks/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-custom-blocks/.babelrc +++ b/packages/gatsby-remark-custom-blocks/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-embed-snippet/.babelrc b/packages/gatsby-remark-embed-snippet/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-remark-embed-snippet/.babelrc +++ b/packages/gatsby-remark-embed-snippet/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-remark-graphviz/.babelrc b/packages/gatsby-remark-graphviz/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-graphviz/.babelrc +++ b/packages/gatsby-remark-graphviz/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-images/.babelrc b/packages/gatsby-remark-images/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-images/.babelrc +++ b/packages/gatsby-remark-images/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-katex/.babelrc b/packages/gatsby-remark-katex/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-katex/.babelrc +++ b/packages/gatsby-remark-katex/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-prismjs/.babelrc b/packages/gatsby-remark-prismjs/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-prismjs/.babelrc +++ b/packages/gatsby-remark-prismjs/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-responsive-iframe/.babelrc b/packages/gatsby-remark-responsive-iframe/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-responsive-iframe/.babelrc +++ b/packages/gatsby-remark-responsive-iframe/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-remark-smartypants/.babelrc b/packages/gatsby-remark-smartypants/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-remark-smartypants/.babelrc +++ b/packages/gatsby-remark-smartypants/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-contentful/.babelrc b/packages/gatsby-source-contentful/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-contentful/.babelrc +++ b/packages/gatsby-source-contentful/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-drupal/.babelrc b/packages/gatsby-source-drupal/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-drupal/.babelrc +++ b/packages/gatsby-source-drupal/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-faker/.babelrc b/packages/gatsby-source-faker/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-faker/.babelrc +++ b/packages/gatsby-source-faker/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-filesystem/.babelrc b/packages/gatsby-source-filesystem/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-filesystem/.babelrc +++ b/packages/gatsby-source-filesystem/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-graphql/.babelrc b/packages/gatsby-source-graphql/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-graphql/.babelrc +++ b/packages/gatsby-source-graphql/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-hacker-news/.babelrc b/packages/gatsby-source-hacker-news/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-hacker-news/.babelrc +++ b/packages/gatsby-source-hacker-news/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-lever/.babelrc b/packages/gatsby-source-lever/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-lever/.babelrc +++ b/packages/gatsby-source-lever/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-medium/.babelrc b/packages/gatsby-source-medium/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-medium/.babelrc +++ b/packages/gatsby-source-medium/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-mongodb/.babelrc b/packages/gatsby-source-mongodb/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-mongodb/.babelrc +++ b/packages/gatsby-source-mongodb/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-npm-package-search/.babelrc b/packages/gatsby-source-npm-package-search/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-npm-package-search/.babelrc +++ b/packages/gatsby-source-npm-package-search/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-source-wikipedia/.babelrc b/packages/gatsby-source-wikipedia/.babelrc index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/packages/gatsby-source-wikipedia/.babelrc +++ b/packages/gatsby-source-wikipedia/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-source-wordpress/.babelrc b/packages/gatsby-source-wordpress/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-source-wordpress/.babelrc +++ b/packages/gatsby-source-wordpress/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-csv/.babelrc b/packages/gatsby-transformer-csv/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-csv/.babelrc +++ b/packages/gatsby-transformer-csv/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-documentationjs/.babelrc b/packages/gatsby-transformer-documentationjs/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-documentationjs/.babelrc +++ b/packages/gatsby-transformer-documentationjs/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-excel/.babelrc b/packages/gatsby-transformer-excel/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-excel/.babelrc +++ b/packages/gatsby-transformer-excel/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-hjson/.babelrc b/packages/gatsby-transformer-hjson/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-hjson/.babelrc +++ b/packages/gatsby-transformer-hjson/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-javascript-frontmatter/.babelrc b/packages/gatsby-transformer-javascript-frontmatter/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-javascript-frontmatter/.babelrc +++ b/packages/gatsby-transformer-javascript-frontmatter/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-javascript-static-exports/.babelrc b/packages/gatsby-transformer-javascript-static-exports/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-javascript-static-exports/.babelrc +++ b/packages/gatsby-transformer-javascript-static-exports/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-json/.babelrc b/packages/gatsby-transformer-json/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-json/.babelrc +++ b/packages/gatsby-transformer-json/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-pdf/.babelrc b/packages/gatsby-transformer-pdf/.babelrc index 15dc943f1df57..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-pdf/.babelrc +++ b/packages/gatsby-transformer-pdf/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] -} \ No newline at end of file +} diff --git a/packages/gatsby-transformer-react-docgen/.babelrc b/packages/gatsby-transformer-react-docgen/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-react-docgen/.babelrc +++ b/packages/gatsby-transformer-react-docgen/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-remark/.babelrc b/packages/gatsby-transformer-remark/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-remark/.babelrc +++ b/packages/gatsby-transformer-remark/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-screenshot/.babelrc b/packages/gatsby-transformer-screenshot/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-screenshot/.babelrc +++ b/packages/gatsby-transformer-screenshot/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-sharp/.babelrc b/packages/gatsby-transformer-sharp/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-sharp/.babelrc +++ b/packages/gatsby-transformer-sharp/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-sqip/.babelrc b/packages/gatsby-transformer-sqip/.babelrc index 61247365a9c31..aaa36072d7588 100644 --- a/packages/gatsby-transformer-sqip/.babelrc +++ b/packages/gatsby-transformer-sqip/.babelrc @@ -1,6 +1,6 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/packages/gatsby-transformer-toml/.babelrc b/packages/gatsby-transformer-toml/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-toml/.babelrc +++ b/packages/gatsby-transformer-toml/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-xml/.babelrc b/packages/gatsby-transformer-xml/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-xml/.babelrc +++ b/packages/gatsby-transformer-xml/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby-transformer-yaml/.babelrc b/packages/gatsby-transformer-yaml/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/gatsby-transformer-yaml/.babelrc +++ b/packages/gatsby-transformer-yaml/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 2f513574c45c2..e1452b2b04ada 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -13,12 +13,7 @@ "@babel/code-frame": "^7.0.0", "@babel/core": "^7.0.0", "@babel/parser": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.0.0", "@babel/traverse": "^7.0.0", "@reach/router": "^1.1.1", @@ -26,9 +21,9 @@ "babel-core": "7.0.0-bridge.0", "babel-eslint": "^8.2.2", "babel-loader": "8.0.0-beta.4", + "babel-preset-gatsby": "^0.1.0", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-macros": "^2.4.0", "babel-plugin-remove-graphql-queries": "^2.0.2-rc.3", "better-queue": "^3.8.6", "bluebird": "^3.5.0", @@ -129,11 +124,6 @@ }, "devDependencies": { "@babel/cli": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.0.0", "cross-env": "^5.1.4", "lerna": "^2.9.0", diff --git a/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap b/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap index 689ce4a6375c2..b5e94554957f9 100644 --- a/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap +++ b/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap @@ -167,71 +167,11 @@ Array [ ], Array [ Array [ - "/path/to/module/@babel/preset-env", - Object { - "loose": true, - "modules": false, - "targets": Object { - "browsers": undefined, - }, - "useBuiltIns": "usage", - }, - ], - Object { - "type": "preset", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/preset-react", - Object { - "development": false, - "pragma": "React.createElement", - "useBuiltIns": true, - }, + "/path/to/module/babel-preset-gatsby", ], Object { "type": "preset", }, ], - Array [ - Array [ - "/path/to/module/@babel/plugin-proposal-class-properties", - Object { - "loose": true, - }, - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/babel-plugin-macros", - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/plugin-syntax-dynamic-import", - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/plugin-transform-runtime", - Object { - "helpers": true, - "regenerator": true, - }, - ], - Object { - "type": "plugin", - }, - ], ] `; diff --git a/packages/gatsby/src/utils/babel-loader-helpers.js b/packages/gatsby/src/utils/babel-loader-helpers.js index 1559136fcbf3b..4ce5b6b3c98c3 100644 --- a/packages/gatsby/src/utils/babel-loader-helpers.js +++ b/packages/gatsby/src/utils/babel-loader-helpers.js @@ -48,95 +48,14 @@ const prepareOptions = (babel, resolve = require.resolve) => { ) } - // Fallback presets/plugins + // Fallback preset const fallbackPresets = [] - const fallbackPlugins = [] - - let targets - if (stage === `build-html`) { - targets = { - node: `current`, - } - } else { - targets = { - browsers: pluginBabelConfig.browserslist, - } - } fallbackPresets.push( - babel.createConfigItem( - [ - resolve(`@babel/preset-env`), - { - loose: true, - modules: false, - useBuiltIns: `usage`, - targets, - }, - ], - { - type: `preset`, - } - ) - ) - - fallbackPresets.push( - babel.createConfigItem( - [ - resolve(`@babel/preset-react`), - { - useBuiltIns: true, - pragma: `React.createElement`, - development: stage === `develop`, - }, - ], - { - type: `preset`, - } - ) - ) - - fallbackPlugins.push( - babel.createConfigItem( - [ - resolve(`@babel/plugin-proposal-class-properties`), - { - loose: true, - }, - ], - { - type: `plugin`, - } - ) - ) - - fallbackPlugins.push( - babel.createConfigItem([resolve(`babel-plugin-macros`)], { - type: `plugin`, + babel.createConfigItem([resolve(`babel-preset-gatsby`)], { + type: `preset`, }) ) - - fallbackPlugins.push( - babel.createConfigItem([resolve(`@babel/plugin-syntax-dynamic-import`)], { - type: `plugin`, - }) - ) - - fallbackPlugins.push( - babel.createConfigItem( - [ - resolve(`@babel/plugin-transform-runtime`), - { - helpers: true, - regenerator: true, - }, - ], - { - type: `plugin`, - } - ) - ) - // Go through babel state and create config items for presets/plugins from. const reduxPlugins = [] const reduxPresets = [] @@ -160,7 +79,6 @@ const prepareOptions = (babel, resolve = require.resolve) => { reduxPlugins, requiredPresets, requiredPlugins, - fallbackPlugins, fallbackPresets, ] } diff --git a/packages/gatsby/src/utils/babel-loader.js b/packages/gatsby/src/utils/babel-loader.js index d88c26f313545..b3a646363cd0a 100644 --- a/packages/gatsby/src/utils/babel-loader.js +++ b/packages/gatsby/src/utils/babel-loader.js @@ -43,7 +43,6 @@ module.exports = babelLoader.custom(babel => { reduxPlugins, requiredPresets, requiredPlugins, - fallbackPlugins, fallbackPresets, ] = prepareOptions(babel) @@ -52,7 +51,7 @@ module.exports = babelLoader.custom(babel => { if (!partialConfig.hasFilesystemConfig()) { options = { ...options, - plugins: [...fallbackPlugins, ...requiredPlugins], + plugins: requiredPlugins, presets: [...fallbackPresets, ...requiredPresets], } } else { diff --git a/packages/graphql-skip-limit/.babelrc b/packages/graphql-skip-limit/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/graphql-skip-limit/.babelrc +++ b/packages/graphql-skip-limit/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/plop-templates/package/.babelrc.hbs b/plop-templates/package/.babelrc.hbs index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/plop-templates/package/.babelrc.hbs +++ b/plop-templates/package/.babelrc.hbs @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/yarn.lock b/yarn.lock index f5945111f9290..46579201325be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2923,12 +2923,13 @@ babel-plugin-lodash@^3.2.11: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz#6c5f9836e1f6c0a9743b3bab4af29f73e437e544" - integrity sha512-flIBfrqAdHWn+4l2cS/4jZEyl+m5EaBHVzTb0aOF+eu/zR7E41/MoCFHPhDNL8Wzq1nyelnXeT+vcL2byFLSZw== +babel-plugin-macros@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz#21b1a2e82e2130403c5ff785cba6548e9b644b28" + integrity sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA== dependencies: cosmiconfig "^5.0.5" + resolve "^1.8.1" babel-plugin-react-css-modules@^3.2.1: version "3.4.2"