mirror of
https://github.com/status-im/react-native.git
synced 2025-01-09 17:15:54 +00:00
e6cb02d61a
Summary: Rather than specifying Babel plugins in the `.babelrc` packaged with react-native, leverage a Babel preset to define the plugins (https://github.com/exponentjs/babel-preset-react-native). This allows for a much better user experience for those who want (or need) to override options in their project's `.babelrc`. Prior to this PR, if a user wanted to use a custom babel-plugin (or a custom set of babel plugins), they'd have either 1) manually override the `.babelrc` in the react-packager directory (or fork RN), or 2) specify a custom transformer to use when running the packager that loaded their own `.babelrc`. Note - the custom transformer was necessary because without it, RN's `.babelrc` options would supersede the options defined in the project's `.babelrc`...potentially causing issues with plugin ordering. This PR makes the transformer check for the existence of a project-level `.babelrc`, and if it it's there, it _doesn't_ use the react-native `.babelrc`. This prevents any oddities with Babel plug Closes https://github.com/facebook/react-native/pull/5214 Reviewed By: davidaurelio Differential Revision: D2881814 Pulled By: martinbigio fb-gh-sync-id: 4168144b7a365fae62bbeed094d8a03a48b4798c
33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-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';
|
|
|
|
/**
|
|
* Manually resolve all default Babel plugins.
|
|
* `babel.transform` will attempt to resolve all base plugins relative to
|
|
* the file it's compiling. This makes sure that we're using the plugins
|
|
* installed in the react-native package.
|
|
*/
|
|
function resolvePlugins(plugins) {
|
|
return plugins.map(function(plugin) {
|
|
// Normalise plugin to an array.
|
|
if (!Array.isArray(plugin)) {
|
|
plugin = [plugin];
|
|
}
|
|
// Only resolve the plugin if it's a string reference.
|
|
if (typeof plugin[0] === 'string') {
|
|
plugin[0] = require('babel-plugin-' + plugin[0]);
|
|
plugin[0] = plugin[0].__esModule ? plugin[0].default : plugin[0];
|
|
}
|
|
return plugin;
|
|
});
|
|
}
|
|
|
|
module.exports = resolvePlugins;
|