Refactor the babel config generator function to what it actually does

Reviewed By: rubennorte

Differential Revision: D7788527

fbshipit-source-id: 4daed4d75b44b9c55a676881982cdab0034a27cc
This commit is contained in:
Peter van der Zee 2018-05-02 10:06:41 -07:00 committed by Facebook Github Bot
parent 7ab8d08f89
commit dfc30f0352

View File

@ -12,64 +12,33 @@
'use strict';
require('metro-babel-register/src/node-polyfills');
const fs = require('fs');
const {transformSync} = require('@babel/core');
const babelConfig = getBabelRegisterConfig();
function getBabelRegisterConfig() {
// from: metro/packages/metro-babel-register/babel-register.js
// (dont use babel-register anymore, it obsoleted with babel 7)
/**
* 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.
*
* @format
*/
'use strict';
require('metro-babel-register/src/node-polyfills');
var _only = [];
const PLUGINS = [
'transform-flow-strip-types',
'proposal-object-rest-spread',
'proposal-class-properties',
'@babel/plugin-transform-flow-strip-types',
'@babel/plugin-proposal-object-rest-spread',
'@babel/plugin-proposal-class-properties',
];
function config(onlyList: Array<string>) {
/* $FlowFixMe(>=0.70.0 site=react_native_fb) This comment suppresses an
* error found when Flow v0.70 was deployed. To see the error delete this
* comment and run Flow. */
_only = _only.concat(onlyList);
function createBabelConfig() {
return {
presets: [],
/* $FlowFixMe(>=0.70.0 site=react_native_fb) This comment suppresses an
* error found when Flow v0.70 was deployed. To see the error delete
* this comment and run Flow. */
plugins: PLUGINS.map(pluginName =>
// $FlowFixMe TODO t26372934 plugin require
require(`@babel/plugin-${pluginName}`),
),
only: _only,
plugins: PLUGINS.map(require),
retainLines: true,
sourceMaps: 'inline',
babelrc: false,
};
}
return config;
}
describe('require', () => {
const moduleSystemCode = (() => {
const {only, ...config} = babelConfig([]);
only;
const config = createBabelConfig();
const rawCode = fs.readFileSync(require.resolve('../require'), 'utf8');
return transformSync(rawCode, config).code;
})();