Skip to content

Commit

Permalink
Switch back to babel-loader (#5143)
Browse files Browse the repository at this point in the history
* Switch back to babel-loader

* Preserve existing caller options. Use Object.assign instead of object spread.

* Updated filename in package.json

* Update comment about cache identifier

* Update macro check to use a regex

* Move macro check regex out of function
  • Loading branch information
iansu authored and Timer committed Sep 27, 2018
1 parent af61071 commit 39c73ce
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 54 deletions.
12 changes: 0 additions & 12 deletions packages/babel-preset-react-app/loader.js

This file was deleted.

32 changes: 0 additions & 32 deletions packages/babel-preset-react-app/overrides.js

This file was deleted.

5 changes: 2 additions & 3 deletions packages/babel-preset-react-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
"dependencies.js",
"dev.js",
"index.js",
"loader.js",
"overrides.js",
"webpack-overrides.js",
"prod.js",
"test.js"
],
Expand All @@ -31,7 +30,7 @@
"@babel/preset-flow": "7.0.0",
"@babel/preset-react": "7.0.0",
"@babel/runtime": "7.0.0",
"babel-loader": "8.0.2",
"babel-loader": "8.0.4",
"babel-plugin-macros": "2.4.2",
"babel-plugin-transform-dynamic-import": "2.1.0",
"babel-plugin-transform-react-remove-prop-types": "0.4.18"
Expand Down
33 changes: 33 additions & 0 deletions packages/babel-preset-react-app/webpack-overrides.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';

const crypto = require('crypto');

const macroCheck = new RegExp('[./]macro');

module.exports = function() {
return {
// This function transforms the Babel configuration on a per-file basis
config(config, { source }) {
// Babel Macros are notoriously hard to cache, so they shouldn't be
// https://github.com/babel/babel/issues/8497
// We naively detect macros using their package suffix and add a random token
// to the caller, a valid option accepted by Babel, to compose a one-time
// cacheIdentifier for the file. We cannot tune the loader options on a per
// file basis.
if (macroCheck.test(source)) {
return Object.assign({}, config.options, {
caller: Object.assign({}, config.options.caller, {
craInvalidationToken: crypto.randomBytes(32).toString('hex'),
}),
});
}
return config.options;
},
};
};
2 changes: 1 addition & 1 deletion packages/react-error-overlay/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "9.0.0",
"babel-jest": "23.6.0",
"babel-loader": "8.0.2",
"babel-loader": "8.0.4",
"babel-preset-react-app": "^4.0.0",
"chalk": "^2.3.2",
"chokidar": "^2.0.2",
Expand Down
8 changes: 4 additions & 4 deletions packages/react-scripts/config/webpack.config.dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,11 @@ module.exports = {
},
},
{
// We need to use our own loader until `babel-loader` supports
// customization
// https://github.com/babel/babel-loader/pull/687
loader: require.resolve('babel-preset-react-app/loader'),
loader: require.resolve('babel-loader'),
options: {
customize: require.resolve(
'babel-preset-react-app/webpack-overrides'
),
// @remove-on-eject-begin
babelrc: false,
configFile: false,
Expand Down
5 changes: 4 additions & 1 deletion packages/react-scripts/config/webpack.config.prod.js
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,11 @@ module.exports = {
// We need to use our own loader until `babel-loader` supports
// customization
// https://github.com/babel/babel-loader/pull/687
loader: require.resolve('babel-preset-react-app/loader'),
loader: require.resolve('babel-loader'),
options: {
customize: require.resolve(
'babel-preset-react-app/webpack-overrides'
),
// @remove-on-eject-begin
babelrc: false,
configFile: false,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-scripts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "9.0.0",
"babel-jest": "23.6.0",
"babel-loader": "8.0.2",
"babel-loader": "8.0.4",
"babel-plugin-named-asset-import": "^0.2.0",
"babel-preset-react-app": "^4.0.0",
"bfj": "6.1.1",
Expand Down

5 comments on commit 39c73ce

@brunolemos
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Timer @iansu this is causing an error after ejecting:
Cannot find module 'babel-preset-react-app/webpack-overrides'

@iansu
Copy link
Contributor Author

@iansu iansu commented on 39c73ce Sep 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I think I know what the issue is. I'll fix it tomorrow.

@Timer
Copy link
Contributor

@Timer Timer commented on 39c73ce Sep 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why didn't our E2E catch it?

@iansu
Copy link
Contributor Author

@iansu iansu commented on 39c73ce Sep 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good question. I don't know why. I've submitted a fix (and tested it manually) here: #5160

@iansu
Copy link
Contributor Author

@iansu iansu commented on 39c73ce Sep 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@brunolemos I'm unable to reproduce this error. If you encounter this again please file a new issue and we'll investigate.

Please sign in to comment.