react-native/setupBabel.js
Christoph Pojer 17e0478cf4 Remove setupBabel call from main entry point
Summary:
* Internally, we already set up babel before calling into metro-bundler.
* Externally, I moved the setup calls to outside the packager/ folder.

If somebody has a custom integration with RN, they would need to setup babel themselves up until we make the open source split. By the time this is released in open source, an npm version of metro-bundler will be available for use.

Next step: also do this for the worker and remove setupBabel from the metro repo.

Reviewed By: davidaurelio

Differential Revision: D5121429

fbshipit-source-id: e77c6ccc23bef1d13fd74c4727be2d7e09d2d0ca
2017-05-24 11:45:46 -07:00

52 lines
1.5 KiB
JavaScript

/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
'use strict';
const babelRegisterOnly = require('./packager/babelRegisterOnly');
const escapeRegExp = require('lodash/escapeRegExp');
const path = require('path');
const BABEL_ENABLED_PATHS = [
'packager/index.js',
'packager/src',
'packager/transformer.js',
'local-cli',
];
/**
* We use absolute paths for matching only the top-level folders reliably. For
* example, we would not want to match some deeply nested forder that happens to
* have the same name as one of `BABEL_ENABLED_PATHS`.
*/
function buildRegExps(basePath, dirPaths) {
return dirPaths.map(folderPath =>
// Babel `only` option works with forward slashes in the RegExp so replace
// backslashes for Windows.
new RegExp(`^${escapeRegExp(path.resolve(basePath, folderPath).replace(/\\/g, '/'))}`)
);
}
function getOnlyList() {
return buildRegExps(__dirname, BABEL_ENABLED_PATHS);
}
/**
* Centralized place to register all the directories that need a Babel
* transformation before being fed to Node.js. Notably, this is necessary to
* support Flow type annotations.
*/
function setupBabel() {
babelRegisterOnly(getOnlyList());
}
setupBabel.buildRegExps = buildRegExps;
setupBabel.getOnlyList = getOnlyList;
module.exports = setupBabel;