react-native/local-cli
Martín Bigio 4ffb241647 Hot Loading E2E basic flow
Summary:
public

Implement all the necessary glue code for several diffs submitted before to get Hot Loading work end to end:

- Simplify `HMRClient`: we don't need to make it stateful allowing to enable and disable it because both when we enable and disable the interface we need to reload the bundle.
- On the native side we introduced a singleton to process the bundle URL. This new class might alter the url to include the `hot` attribute. I'm not 100% sure this is the best way to implement this but we cannot use `CTLSettings` for this as it's are not available on oss and I didn't want to contaminate `RCTBridge` with something specific to hot loading. Also, we could potentially use this processor for other things in the future. Please let me know if you don't like this approach or you have a better idea :).
- Use this processor to alter the default bundle URL and request a `hot` bundle when hot loading is enabled. Also make sure to enable the HMR interface when the client activates it on the dev menu.
- Add packager `hot` option.
- Include gaeron's `react-transform` on Facebook's JS transformer.

The current implementation couples a bit React Native to this feature because `react-transform-hmr` is required on `InitializeJavaScriptAppEngine`. Ideally, the packager should accept an additional list of requires and include them on the bundle among all their dependencies. Note this is not the same as the option `runBeforeMainModule` as that one only adds a require to the provided module but doesn't include all the dependencies that module amy have that the entry point doesn't. I'll address this in a follow up task to enable asap hot loading (9536142)

I had to remove 2 `.babelrc` files from `react-proxy` and `react-deep-force-update`. There's an internal task for fixing the underlaying issue to avoid doing this horrible hack (t9515889).

Reviewed By: vjeux

Differential Revision: D2790806

fb-gh-sync-id: d4b78a2acfa071d6b3accc2e6716ef5611ad4fda
2015-12-28 16:44:59 -08:00
..
__mocks__ Fix more tests 2015-09-16 13:05:30 -07:00
__tests__ Temporarily disable cli tests 2015-11-12 07:05:01 -08:00
bundle getTransformOptionsModulePath 2015-12-24 01:02:30 -08:00
dependencies getTransformOptionsModulePath 2015-12-24 01:02:30 -08:00
generate Revert "Add folders to attempt to unblock sync" 2015-10-26 22:48:10 +00:00
generator Update templates to ES2015 2015-12-25 02:17:30 -08:00
generator-android Add a base activity for React Native apps. Fixes #4043 2015-12-23 10:07:42 -08:00
generator-ios Add space after url. Fixes #4292 2015-11-23 12:31:30 -08:00
library Introduce react-native link 2015-10-27 11:22:28 -07:00
runAndroid fix run-android looking for packager in wrong place 2015-11-06 12:05:28 -08:00
server Hot Loading E2E basic flow 2015-12-28 16:44:59 -08:00
upgrade Revert "Add folders to attempt to unblock sync" 2015-10-26 22:48:10 +00:00
util Revert "Add folders to attempt to unblock sync" 2015-10-26 22:48:10 +00:00
cli.js Add unbundling to packager 2015-12-01 08:48:30 -08:00
default.config.js More descriptive comment in default.config.js 2015-11-12 07:43:25 -08:00
generate-android.js Add license headers to local-cli 2015-10-20 09:55:21 -07:00
generator-utils.js Add license headers to local-cli 2015-10-20 09:55:21 -07:00
setup_env.bat Fix comments on .bat file 2015-10-28 21:36:07 -04:00
setup_env.sh Start packager through cli 2015-10-21 03:03:59 -07:00
wrong-react-native.js Bring back global cli module check 2015-10-26 15:36:29 -07:00