mirror of https://github.com/status-im/metro.git
Use a separate babel config for the local-cli and the packager
Summary: This separates the babel config of the local-cli and the packager from the one used by the transforms of the packager since it doesn't run in the same environment and the local-cli/packager doesn't require react specific transforms and runs in node 4 so we can also avoid some es2015 transforms that node already supports. I had to move the code in cli.js so it can still run in node 0.12 that doesn't support `const` since it is no longer transformed. **Test plan** Run the local-cli on node 0.12 and there should be a message saying that it requires at least node 4. Run the local-cli on node 4 and 5 and everything should work the same as before. I was also hoping for some perf gains but there was nothing noticeable. I did benchmark the babel-register call and it stayed pretty much the same. As for runtime performance it can help if there are optimisations for es2015 features in node. Closes https://github.com/facebook/react-native/pull/6155 Reviewed By: bestander Differential Revision: D3301008 Pulled By: davidaurelio fbshipit-source-id: 504180d158a1e50bc03e28fb0d1e53d0731ce32f
This commit is contained in:
parent
31131746d8
commit
fd40670869
|
@ -12,20 +12,19 @@ Array.prototype.values || require('core-js/fn/array/values');
|
||||||
Object.entries || require('core-js/fn/object/entries');
|
Object.entries || require('core-js/fn/object/entries');
|
||||||
Object.values || require('core-js/fn/object/values');
|
Object.values || require('core-js/fn/object/values');
|
||||||
|
|
||||||
var fs = require('fs');
|
|
||||||
var path = require('path');
|
|
||||||
|
|
||||||
var _only = [];
|
var _only = [];
|
||||||
|
|
||||||
function readBabelRC() {
|
|
||||||
var rcpath = path.join(__dirname, 'react-packager', 'rn-babelrc.json');
|
|
||||||
var source = fs.readFileSync(rcpath).toString();
|
|
||||||
return JSON.parse(source);
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = function(onlyList) {
|
module.exports = function(onlyList) {
|
||||||
_only = _only.concat(onlyList);
|
_only = _only.concat(onlyList);
|
||||||
var config = readBabelRC();
|
|
||||||
config.only = _only;
|
require('babel-register')({
|
||||||
require('babel-register')(config);
|
presets: ['es2015-node'],
|
||||||
|
plugins: [
|
||||||
|
'transform-flow-strip-types',
|
||||||
|
'syntax-trailing-function-commas',
|
||||||
|
'transform-object-rest-spread',
|
||||||
|
],
|
||||||
|
only: _only,
|
||||||
|
sourceMaps: 'inline',
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "0.3.2",
|
"version": "0.4.0",
|
||||||
"name": "react-native-packager",
|
"name": "react-native-packager",
|
||||||
"description": "Build native apps with React!",
|
"description": "Build native apps with React!",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
Loading…
Reference in New Issue