From a72c2950d6719d44dee2750b70605901cdf3eb07 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Tue, 1 Mar 2016 03:20:54 -0800 Subject: [PATCH] babel-preset-react-native: Make sure that `react-transform-hmr/lib/index.js` is included correctly for every module in the bundle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary:This imports `react-transform-hmr/lib/index.js` with a relative path from every module, to make sure we don’t rely on the current (broken) behaviour. It works now, because: - the dependency is added by a transform - we extract dependencies before transforming - we include `react-transform-hmr/lib/index.js` manually - packager incorrectly names modules by the name of their package (i.e. packages with multiple versions overwrite each other) This blocks transforming before extracting dependencies, switching to numeric module IDs, and unbundling/random access bundles. Reviewed By: bestander Differential Revision: D2994024 fb-gh-sync-id: 23c56397b768775ff56e3d6924f50a9e39e8ce8c shipit-source-id: 23c56397b768775ff56e3d6924f50a9e39e8ce8c --- babel-preset/configs/hmr.js | 11 +++++++++-- babel-preset/package.json | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/babel-preset/configs/hmr.js b/babel-preset/configs/hmr.js index 2a4bb9a9370..e88e2c67d5b 100644 --- a/babel-preset/configs/hmr.js +++ b/babel-preset/configs/hmr.js @@ -8,16 +8,23 @@ */ 'use strict'; +var path = require('path'); var resolvePlugins = require('../lib/resolvePlugins'); -module.exports = function(options) { +var hmrTransform = 'react-transform-hmr/lib/index.js'; +var transformPath = require.resolve(hmrTransform); + +module.exports = function(options, filename) { + var transform = filename + ? path.relative(path.dirname(filename), transformPath) // packager can't handle absolute paths + : hmrTransform; return { plugins: resolvePlugins([ [ 'react-transform', { transforms: [{ - transform: 'react-transform-hmr/lib/index.js', + transform: transform, imports: ['React'], locals: ['module'], }] diff --git a/babel-preset/package.json b/babel-preset/package.json index 0ab0579b153..00d24728afd 100644 --- a/babel-preset/package.json +++ b/babel-preset/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-react-native", - "version": "1.4.0", + "version": "1.5.0", "description": "Babel preset for React Native applications", "main": "index.js", "repository": "https://github.com/facebook/react-native/tree/master/babel-preset",