From e74e12330037031691f194b9485c2defae7c93c4 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Mon, 26 Jun 2017 05:05:54 -0700 Subject: [PATCH] fix support for node v4 Summary: Node v4 support has been broken for some time, with CircleCI failing tests. That's because it needs an additional transform for the spread operator in call position. Ex `foo(...smth)` expanding to `foo.apply(null, smth)`. Also, the build script was using syntax not supported by Node v4. This changeset fixes the build script, and adds the missing transform. This will be used both for jest test and for the produced production output. This is needed for prod output since we want it to be able to be ran on Node v4 out-of-the-box. CircleCI will confirm these changes work properly on all supported versions of Node. Closes https://github.com/facebook/metro-bundler/pull/16 Differential Revision: D5319746 Pulled By: davidaurelio fbshipit-source-id: 6c001b562b43da0625d1ac15d018117524970431 --- .babelrc | 1 + package.json | 1 + scripts/build.js | 6 ++++-- yarn.lock | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.babelrc b/.babelrc index 1cdd14fd..50403603 100644 --- a/.babelrc +++ b/.babelrc @@ -5,6 +5,7 @@ "transform-class-properties", "transform-es2015-destructuring", "transform-es2015-parameters", + "transform-es2015-spread", "transform-flow-strip-types", "transform-object-rest-spread" ], diff --git a/package.json b/package.json index 7641e0b0..c075b24c 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "babel-plugin-transform-class-properties": "^6.18.0", "babel-plugin-transform-es2015-destructuring": "^6.23.0", "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", "babel-plugin-transform-flow-strip-types": "^6.21.0", "babel-plugin-transform-object-rest-spread": "^6.20.2", "babel-preset-es2015-node": "^6.1.1", diff --git a/scripts/build.js b/scripts/build.js index 16455b23..054cbd0e 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -17,6 +17,8 @@ * node ./scripts/build.js /user/c/metro-bundler/packages/metro-abc/src/abc.js */ +'use strict'; + const fs = require('fs'); const path = require('path'); const glob = require('glob'); @@ -43,7 +45,7 @@ const babelEs5Options = Object.assign( {}, babelNodeOptions, {presets: 'env'}, - {plugins: [...babelNodeOptions.plugins, 'transform-runtime']} + {plugins: [].concat(babelNodeOptions.plugins, 'transform-runtime')} ); const fixedWidth = str => { @@ -87,7 +89,7 @@ function buildFile(file, silent) { getPackageName(file), 'package.json' ); - const {browser} = require(pkgJsonPath); + const browser = require(pkgJsonPath).browser; if (browser) { if (browser.indexOf(BUILD_ES5_DIR) !== 0) { throw new Error( diff --git a/yarn.lock b/yarn.lock index 2098d232..f8e28fcd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -521,7 +521,7 @@ babel-plugin-transform-es2015-shorthand-properties@6.x, babel-plugin-transform-e babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-spread@6.x, babel-plugin-transform-es2015-spread@^6.8.0: +babel-plugin-transform-es2015-spread@6.x, babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" dependencies: