diff --git a/packages/babel-preset-gatsby/README.md b/packages/babel-preset-gatsby/README.md index 3a398510736b6..72e0e6ce5dad0 100644 --- a/packages/babel-preset-gatsby/README.md +++ b/packages/babel-preset-gatsby/README.md @@ -12,6 +12,7 @@ For more information on how to customize the Babel configuration of your Gatsby - [`@babel/plugin-syntax-dynamic-import`](https://babeljs.io/docs/en/babel-plugin-syntax-dynamic-import) - [`@babel/plugin-transform-runtime`](https://babeljs.io/docs/en/babel-plugin-transform-runtime#docsNav) - [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) +- [`babel-plugin-transform-react-remove-prop-types`](https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types) ## Usage diff --git a/packages/babel-preset-gatsby/package.json b/packages/babel-preset-gatsby/package.json index 8a78afc5ea229..9cb51165347cc 100644 --- a/packages/babel-preset-gatsby/package.json +++ b/packages/babel-preset-gatsby/package.json @@ -16,7 +16,8 @@ "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.4.5", "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-macros": "^2.4.2" + "babel-plugin-macros": "^2.4.2", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" }, "peerDependencies": { "@babel/core": "^7.0.0" diff --git a/packages/babel-preset-gatsby/src/__tests__/index.js b/packages/babel-preset-gatsby/src/__tests__/index.js index bd6cbed81ad68..6612a07120559 100644 --- a/packages/babel-preset-gatsby/src/__tests__/index.js +++ b/packages/babel-preset-gatsby/src/__tests__/index.js @@ -146,3 +146,24 @@ it(`Allows to configure browser targets`, () => { }, ]) }) + +describe(`in production mode`, () => { + it(`adds babel-plugin-transform-react-remove-prop-types`, () => { + process.env.GATSBY_BUILD_STAGE = `build-javascript` + + const { plugins } = preset() + + expect(plugins).toEqual( + expect.arrayContaining([ + [ + expect.stringContaining( + path.join(`babel-plugin-transform-react-remove-prop-types`) + ), + { + removeImport: true, + }, + ], + ]) + ) + }) +}) diff --git a/packages/babel-preset-gatsby/src/index.js b/packages/babel-preset-gatsby/src/index.js index 1e5ec4446049c..a6cddf6d016a0 100644 --- a/packages/babel-preset-gatsby/src/index.js +++ b/packages/babel-preset-gatsby/src/index.js @@ -94,6 +94,13 @@ module.exports = function preset(_, options = {}) { }, ], IS_TEST && resolve(`babel-plugin-dynamic-import-node`), + stage === `build-javascript` && [ + // Remove PropTypes from production build + resolve(`babel-plugin-transform-react-remove-prop-types`), + { + removeImport: true, + }, + ], ].filter(Boolean), } } diff --git a/yarn.lock b/yarn.lock index d18633ca3720a..171be7a6ecc06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4687,6 +4687,11 @@ babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"