mirror of https://github.com/status-im/metro.git
🚇 The JavaScript bundler for React Native.
https://facebook.github.io/metro
2446fe2211
Summary: This commit refactors the metro bundling logic to make the traversal of dependencies much more generic, to not depend on any assumption regarding dependency resolution, haste, or even about the transformer/caching system. So, the actual API of the `DeltaBundler` module (which will be extracted as a separate package in the near future) ends up being like this: ``` const graph = await deltaBundler.buildGraph( ['/root/entryPoint1.js', '/root/entryPoint2.js', /* ... */], { dependencyResolver: (from, to) => require('resolve').sync(to, {from}), // Use the standard nodejs resolver transformFn: filePath => await transformFileUsingWhateverIPrefer(filePath), }, ); ``` The only part that is still coupled with the `DependencyGraph` is the file listener (which is tied to JestHasteMap via `DependencyGraph`), which is going to be decoupled soon. From here, and once we have the new caching system fully rolled out and the old cache logic removed, we'll incorporate `jest-worker` and the caching system directly into the build graph logic, to end up extracting the whole `DeltaBundler` logic into its own package. From there we can potentially reuse it to create simpler/more focused bundlers for web/etc. Reviewed By: davidaurelio Differential Revision: D7617143 fbshipit-source-id: b7e1a71cd95043f6232b07f2e8c45dcd49f089f2 |
||
---|---|---|
.github | ||
docs | ||
flow-typed | ||
packages | ||
scripts | ||
website | ||
.babelrc | ||
.eslintignore | ||
.eslintrc.js | ||
.flowconfig | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
appveyor.yml | ||
circle.yml | ||
lerna.json | ||
package.json | ||
yarn.lock |
README.md
Metro
🚇 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.
Installation & Documentation
See the Metro website for documentation.