metro/packages/metro-bundler
Rafael Oleza fa4091c63e Make insertion of modules into the delta structure deterministic
Summary:
After checking more deeply, there were still situations where the delta bundler could generate different bundles between runs: when a module is required by two different modules (it has two or more inverse dependencies), that module would not always be inserted after the first inverse dependency in the bundle, which would cause some bundling order discrepancies.

In order to fix that, the bundler now re-traverses synchronously the dependency graph using a DFS traversing algorithm to guarantee the same order. This will add some small runtime overhead (specially when generating the initial bundle), but it's not worrying (from benchmarks in my macbook pro it'll add ~10ms of initial build for every 1000 modules traversed, being this overhead linear).

Reviewed By: mjesun

Differential Revision: D6124993

fbshipit-source-id: 9bc7cb329f01a7860c7d3b52c3376c643ea5cf3b
2017-10-24 12:28:46 -07:00
..
src Make insertion of modules into the delta structure deterministic 2017-10-24 12:28:46 -07:00
.eslintrc Add `"node"` env to packager `.eslintrc` 2017-05-19 07:36:26 -07:00
.npmignore npm package has `src/` rather than `build/` 2017-06-23 09:06:33 -07:00
README.md Update README 2017-06-06 03:29:08 -07:00
package.json Add wordwrap dependency 2017-10-24 12:28:46 -07:00
rn-babelrc.json Remove `react-packager` indirection. 2017-02-02 05:34:12 -08:00
yarn.lock metro-bundler: fix Flow errors in OSS 2017-09-08 06:39:36 -07:00

README.md

metro-bundler

🚇 The JavaScript bundler for React Native.

  • 🚅 Fast: We aim for sub-second reload cycles, fast startup and quick bundling speeds.
  • ⚖️ Scalable: Works with thousands of modules in a single application.
  • ⚛️ Integrated: Supports every React Native project out of the box.

This project was previously part of the react-native repository. In this smaller repository it is easier for the team working on Metro Bundler to respond to both issues and pull requests. See react-native#13976 for the initial announcement.