mirror of https://github.com/status-im/metro.git
🚇 The JavaScript bundler for React Native.
https://facebook.github.io/metro
5a87cc6e4b
Summary: Note: if this changeset causes some breakage, consider disabling rather than reverting. To disable, the call to `_preprocessPotentialDependencies` in `ResolutionRequest` can be removed. It's a bit of an experiment. I couldn't see any particular regression caused by this, but I could see net improvement of the global cache performance, as it unlock much, much stronger batching: indeed, instead of discovering dependencies progressively, we synchronously figure out the list of all potential modules of a bundle, and kick-off cache fetching and/or transformations. So when it comes to fetching from the global cache, it'll do less requests, and each requests will ask for considerably more keys at a time. Potential problem caused by this changeset: if a module's dependencies completely changed, then the first time we try to build the bundle it'll start transforming modules that we probably don't care at all anymore, spending precious CPU time for nothing. I've been thinking about it and I cannot see such a case happening much often. Even if it happens, it should not cause any bug or corruption, it would just take additional time. Other potential problem: that this new code doesn't handle some types of edge cases. It's quite hard to figure out what could possibly break in the `ResolutionRequest` code (and I think it would benefit from a larger refactor). We do have a good test coverage for `DependencyGraph` and it seems to work smoothly, so I'm relatively confident we're not breaking edge cases. Reviewed By: davidaurelio Differential Revision: D4875467 fbshipit-source-id: 2dfcc755bec638d3d1c47862ec1de5220953e812 |
||
---|---|---|
.github | ||
flow-typed | ||
packages | ||
scripts | ||
.babelrc | ||
.eslintignore | ||
.eslintrc | ||
.flowconfig | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
PATENTS | ||
README.md | ||
appveyor.yml | ||
lerna.json | ||
package.json | ||
yarn.lock |
README.md
metro-bundler
The JavaScript bundler for React Native