Making babel to use the babelrc file if we find it

Summary:
This PR tells babel where the babelrc file is if it has been found in the project root. I know you guys are relying on babel to find it when you tell babel the filename and sourceFilename, this works fine in normal js/node projects, here is an example where this will not work.

We have a big repo that can contain a few react-native / js projects. Our build system is similar to BUCK and we keep our third party dependencies in a separate folder (having a global package.json at the project route is not feasible as everyone will have to install every apps dependencies even when they don't need them), the structure looks a bit like this:

`third_party/js/.` packages from node_modules
`common/js/` common code used by numerous apps, common components, services etc.
`my_app/native` the app

What's happening is something from `my_app/native` (where the .babelrc file is) is requiring something from `common/js` which is then requiring something from `third_party/js` and so babel has no idea what .babelrc file to use and
Closes https://github.com/facebook/react-native/pull/8131

Differential Revision: D4167844

Pulled By: hramos

fbshipit-source-id: 3569981e26ff8f8c632d8ae365a1f43a3483b13b
This commit is contained in:
benjaminhughes 2016-11-11 11:25:40 -08:00 committed by Facebook Github Bot
parent 5daf1cfa6d
commit c83fc07973
1 changed files with 3 additions and 5 deletions

View File

@ -37,11 +37,6 @@ const getBabelRC = (function() {
// Let's look for the .babelrc in the first project root.
// In the future let's look into adding a command line option to specify
// this location.
//
// NOTE: we're not reading the project's .babelrc here. We leave it up to
// Babel to do that automatically and apply the transforms accordingly
// (which works because we pass in `filename` and `sourceFilename` to
// Babel when we transform).
let projectBabelRCPath;
if (projectRoots && projectRoots.length > 0) {
projectBabelRCPath = path.resolve(projectRoots[0], '.babelrc');
@ -58,6 +53,9 @@ const getBabelRC = (function() {
// Require the babel-preset's listed in the default babel config
babelRC.presets = babelRC.presets.map((preset) => require('babel-preset-' + preset));
babelRC.plugins = resolvePlugins(babelRC.plugins);
} else {
// if we find a .babelrc file we tell babel to use it
babelRC.extends = projectBabelRCPath;
}
return babelRC;