Commit Graph

1458 Commits

Author SHA1 Message Date
Jean Lauliac 1142f05d59 metro-bundler: v0.12
Reviewed By: cpojer

Differential Revision: D5745702

fbshipit-source-id: 6dc88811525e1595f58b23b7d0ebd5cc9f309785
2017-08-31 10:52:51 -07:00
Jean Lauliac 1c6a96f2b3 metro-bundler: ModuleGraph/output: @format
Reviewed By: cpojer

Differential Revision: D5745469

fbshipit-source-id: 7aa923736d6eb257f547a6d41b4329ce3406c805
2017-08-31 07:24:33 -07:00
Miguel Jimenez Esun 9254941133 Treat package.json's first
Reviewed By: fkgozali

Differential Revision: D5736600

fbshipit-source-id: f2947d4b1fb057ea33dd84e3c8cd878d5bfeda49
2017-08-30 12:08:48 -07:00
Rafael Oleza 909480887e Fix flow types of getShallowDependencies()
Reviewed By: mjesun

Differential Revision: D5735278

fbshipit-source-id: b9a2797a89a3893a5196ef8fe15d2ab8aa00e544
2017-08-30 08:20:38 -07:00
Rafael Oleza 21cc11c5ae Only include hmr transforms when in dev mode
Reviewed By: arcanis

Differential Revision: D5732348

fbshipit-source-id: cc70d3ee6531f1f8345d6a04827ca802382525d8
2017-08-30 03:54:59 -07:00
Miguel Jimenez Esun 84ae805e78 Make metro-bundler use a no-op transformer by default
Summary: When starting to use `metro-bundler` as a standalone server, I found quite complicated the fact that it needs a transformer by default. Moreover, the transformer is not passed as a reference to a JS object, but as a path to a required file. I removed the need to be required, and defaulted to a dummy, basic transform, that does nothing by default. This avoids having to create an extra file and linking to it (potentially needing to involve `path` and other extra modules).

Reviewed By: cpojer

Differential Revision: D5622906

fbshipit-source-id: 0c2b1bec86fa542b3c05de42c89d4b5bb4384b34
2017-08-29 09:42:50 -07:00
yeyuanfeng 3731fa7c3c TransformCaching: fix GC condition judgement error
Summary:
<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. The two fields below are mandatory. -->

**Summary**

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->
I am sending this PR to fix an error in TransformCaching module. See this issue [TransformCaching module try to collect cache every time I build bundle #46](https://github.com/facebook/metro-bundler/issues/46).

**Test plan**

<!-- Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI. -->
```
/**
   * When restarting packager we want to avoid running the collection over
   * again, so we store the last collection time in a file and we check that
   * first.
   */
  _collectCacheIfOldSync() {
    const {_rootPath} = this;
    const cacheCollectionFilePath = path.join(_rootPath, 'last_collected');
    const lastCollected = Number.parseInt(
      tryReadFileSync(cacheCollectionFilePath) || '',
      10,
    );
    if (
      Number.isInteger(lastCollected) &&
      Date.now() - lastCollected < GARBAGE_COLLECTION_PERIOD
    ) {
      return;
    }
    const effectiveCacheDirPath = path.join(_rootPath, CACHE_SUB_DIR);
    mkdirp.sync(effectiveCacheDirPath);
    collectCacheSync(effectiveCacheDirPath);
    fs.writeFileSync(cacheCollectionFilePath, Date.now().toString());
  }
```
Steps:
1. Create a new react-native project.
2. Put your breakpoint at this sentence `collectCacheSync(effectiveCacheDirPath);`.
3. Bundle the project, program will break at `collectCacheSync(effectiveCacheDirPath);`
4. Resume the program, finish the first time bundle.
5. Bundle again, this time program won't break.
Closes https://github.com/facebook/metro-bundler/pull/48

Differential Revision: D5726161

Pulled By: jeanlauliac

fbshipit-source-id: 0865f1bf25d6eb36f067ac3dc7764df9fd5026dc
2017-08-29 08:27:24 -07:00
Rafael Oleza 50ef3138cf Metro HMR: Add file parameter to getShallowDependencies()
Reviewed By: jeanlauliac

Differential Revision: D5687991

fbshipit-source-id: c2db3986c6a5ec81ed1350ded92dfcf1b529c2bc
2017-08-24 08:20:34 -07:00
Rafael Oleza 679309987b Fix HMR when adding/renaming assets
Summary:
The HMR logic used to try to calculate the dependencies of every new added (or modified) file, including assets. This resulted in a TransformError.

This commit adds a check that stops the HMR bundling once it finds out that the updated file is an asset

Reviewed By: cpojer

Differential Revision: D5697391

fbshipit-source-id: faf7ccad76ac4922b70ed1c7ce8ce32b03c4e8ee
2017-08-24 07:40:35 -07:00
Miguel Jimenez Esun b2331471d5 Remove the timeout
Summary: We were not using the timeout at all, so we decided to remove it. Also, the current value is pretty high, so it should never fail unless there's something really bad.

Reviewed By: jeanlauliac

Differential Revision: D5640839

fbshipit-source-id: 3eaa567a6828902376fe5df9fe3f4e96b83a23bd
2017-08-23 07:50:36 -07:00
Jean Lauliac 87aa1cc166 worker-farm: add @format
Reviewed By: davidaurelio

Differential Revision: D5658177

fbshipit-source-id: 59565a57243c6f8ce0d9aceaad5dc542992cd45b
2017-08-21 04:50:46 -07:00
Jean Lauliac bf25e49665 metro-bundler: collect-dependencies: harden requirements for require()
Reviewed By: davidaurelio

Differential Revision: D5658522

fbshipit-source-id: 2970d62bcb18d57595c666d680407a23eccda77b
2017-08-21 04:35:59 -07:00
Jean Lauliac 6a0efc0853 metro-bundler: ModuleGraph worker: @format
Reviewed By: davidaurelio

Differential Revision: D5658384

fbshipit-source-id: 918017a117e5fb574b3f6801104b4db2708a0eff
2017-08-21 04:35:59 -07:00
Ben Nham 72455941ba add number of files changed to bundle response
Reviewed By: davidaurelio

Differential Revision: D5650181

fbshipit-source-id: 16c7842a79bec6cf4fb5bfeffc4bc8a835c7ce83
2017-08-21 04:06:22 -07:00
Andres Suarez 6d4b8e0c8d Upgrade to babylon@6.18.0
Reviewed By: davidaurelio

Differential Revision: D5652526

fbshipit-source-id: 4e1f217c924b9eee33e9f9eae447962617af7e22
2017-08-18 11:21:41 -07:00
Andres Suarez 89cd3a6619 Update to eslint-plugin-react@7.2.1
Reviewed By: davidaurelio

Differential Revision: D5657026

fbshipit-source-id: 2e3f6bc21495e3af45f0e9ee1745cb2809b0fa7c
2017-08-18 09:32:10 -07:00
Alex Dvornikov 5cd43a675b Default to "compact: false" in the code generate phase
Reviewed By: davidaurelio

Differential Revision: D5630578

fbshipit-source-id: 5049be735f41f1207b8ca329f4a78fc92f683c23
2017-08-18 05:05:43 -07:00
Jean Lauliac 936b8c31e7 metro-bundler: elaborate the global cache test a bit
Reviewed By: davidaurelio

Differential Revision: D5650882

fbshipit-source-id: b1f283f00e6e200f3b731126ed7a273fe782aeaa
2017-08-18 04:13:53 -07:00
Jean Lauliac 55986976b1 metro-bundler: temporary increase of the transform timeout
Summary:
We'll revert when the root problem is fixed, that should mitigate for now.

What might be the root problem, I believe, is that when there are some cached files already on the machine, we immediately try to build all the dependencies, but the worker farm is queuing these and it takes a long time to finish. The timeout should include only the transformation time, not the queuing. I'll fix that separately.

Reviewed By: mjesun

Differential Revision: D5650380

fbshipit-source-id: f4b045876cc822caee3998f69ca98ea986709bf4
2017-08-17 11:36:12 -07:00
Jean Lauliac c6794aabd9 metro-bundler: extract calls to require.async()
Reviewed By: davidaurelio

Differential Revision: D5639493

fbshipit-source-id: d74aae95a238cf97b7daafad41ce9cbdccc84c1b
2017-08-17 06:41:18 -07:00
Jean Lauliac 66182916de metro-bundler: extract-dependencies: nit fix
Reviewed By: davidaurelio

Differential Revision: D5639285

fbshipit-source-id: 1f163160e72cb8a63c0c23846ad1b6cc3da13602
2017-08-17 06:41:15 -07:00
David Aurelio 35979c7b00 JSTransformer: pass on `--heap-growing-percent`
Reviewed By: jeanlauliac

Differential Revision: D5648906

fbshipit-source-id: 240b3044dd1268cf5f8bb41710647050368ddefb
2017-08-17 05:08:49 -07:00
Miguel Jimenez Esun b3b2d10500 Do not assume we are using processRequest in an express app
Summary: It might be that Metro bundler is getting used directly with the `http` module and not within an express app. If that's the case, the `next` method will not exist, so we have to guard against it.

Reviewed By: davidaurelio

Differential Revision: D5639944

fbshipit-source-id: bcee4a70f6a7b643218b11af0d8aedbc7762eead
2017-08-17 04:42:10 -07:00
Rafael Oleza e4acb91914 Remove hot parameter from HMR url
Summary: This is the last piece of work to make all the clients do a single request for both HMR/non-HMR modes. I'm not completely sure how this URL is used by the client, but it does not need the `hot` param.

Reviewed By: davidaurelio

Differential Revision: D5639946

fbshipit-source-id: a76f9ba7b9ace625352a156761d3ee2809f80c92
2017-08-16 19:12:43 -07:00
Rafael Oleza 409a2ae809 Always use the HMR transforms when building the bundle from the metro-bundler server
Summary:
This diff enables the HMR transforms for any bundle requested through the metro-bundler HTTP server, so it ignores the `hot` parameter passed in the URL.

This allows much faster switches when enabling/disabling HMR, since metro-bundler does not need to re-compile each single file again, while not impacting substantially build times when HMR is off.

I've done some lightweight benchmarks on my machine and these are the results (all the tests have been done after running metro-bundler with a clean cache and restarting the app).

**Before**

Time to build (HMR off): 1x (baseline)
Time to build (HMR on): 1.90x

**This diff**

Time to build (HMR off): 1.009x
Time to build (HMR on): 1.036x

(The reason why now it takes double the time to load the HMR bundle than the non-HMR bundle after launching the app is because the device after a restart always asks for the non-HMR bundle and afterwards the HMR bundle, causing the server to have to build both bundles).

**Bundle size**
In terms of bundle size, adding the HMR transforms increases the size by around 3-4% (this regression is due to the wrappers added around React components, and will depend on the app).

**Next steps**

There are two improvements to do after this diff:

1. Remove the `hot=true` parameter from the clients when they request the bundle. This will reduce by half the memory used by metro-bundler when switching from non-HMR to HMR (or when opening the app with HMR enabled), since metro-bundler caches the bundles based on url.
2. After this diff, the `hot` parameter in the various options objects will not make much sense, so my suggestion is to just remove it from everywhere and instead of checking for that parameter in the transformer, check for `dev=true` there.

Reviewed By: davidaurelio

Differential Revision: D5623623

fbshipit-source-id: cb76b9182e55f442e2987fcf59eee2ba2571578e
2017-08-15 18:44:03 -07:00
Jean Lauliac a78be6ce0a metro-bundler: get longer stack traces in workers
Reviewed By: davidaurelio

Differential Revision: D5630365

fbshipit-source-id: df397afe80f12a6d8a587cb3e657bcb22b2377f3
2017-08-15 08:43:11 -07:00
Miguel Jimenez Esun e9d815c1fa Reduce source map in 44.5 MiB for Nuclide
Reviewed By: pakoito, davidaurelio

Differential Revision: D5611240

fbshipit-source-id: b0090f6d07d3e08408fc27e91e462a2019130880
2017-08-14 12:07:37 -07:00
Jean Lauliac 08947acde3 RN cli: remove project temp dir experiment
Reviewed By: mjesun

Differential Revision: D5621056

fbshipit-source-id: 464353bc3e68e9e3657e1fbb02aca467b2daa5ca
2017-08-14 03:56:06 -07:00
David Aurelio 30d85a4b05 Terminal: Throttle output to ~30fps
Reviewed By: rafeca

Differential Revision: D5612088

fbshipit-source-id: 3567eb477e771ec680f17ae273dc4daae91614c0
2017-08-11 14:40:24 -07:00
Miguel Jimenez Esun 506e3ec358 Update Jest to 20.1.0-echo.1
Reviewed By: cpojer

Differential Revision: D5591819

fbshipit-source-id: 91830096988d88a6f0601d73225a12ae31e61a17
2017-08-10 07:37:05 -07:00
Brian Vaughn 36b22341b5 React 16 beta 5 sync (5495e49...c3718c4)
Reviewed By: spicyj

Differential Revision: D5564030

fbshipit-source-id: fd3e6133df7ee8e7488a3c515ce6c783c11d9401
2017-08-09 12:25:12 -07:00
David Aurelio 7e6816d99c Remove unused type imports
Reviewed By: cpojer

Differential Revision: D5579025

fbshipit-source-id: b1b4a73db59ec071b18c873a8e676f0722ae109a
2017-08-07 17:44:04 -07:00
Miguel Jimenez Esun 38fce3a7fb Remove redundant calls for addModuleIdsToModuleWrapper
Reviewed By: davidaurelio

Differential Revision: D5526561

fbshipit-source-id: e3452899062587d3b4b5f87a7de01cb0be7a3cb9
2017-08-01 09:52:45 -07:00
David Aurelio 35e5b486c3 Make `ResolveFn` sync
Summary: now that `ResolutionRequest.resolveDependency` is synchronous, we can also make `ResolveFn` synchronous.

Reviewed By: fkgozali

Differential Revision: D5528094

fbshipit-source-id: 0b40df29024b809a99b7e577716b24e9fa499578
2017-07-31 17:46:01 -07:00
David Aurelio 0272069002 Only write assets referenced in a bundle
Summary: Adds filtering to the assets written from a Buck build, so that we don’t write all assets present in libs, but rather only the ones included in the bundle.

Reviewed By: cpojer

Differential Revision: D5522844

fbshipit-source-id: fcca3567b726dfab1ecf9560932fd6e1a174b31f
2017-07-31 10:12:11 -07:00
Jean Lauliac e032e6621f metro-bundler: upgrade all jest refs to delta.4
Reviewed By: mjesun

Differential Revision: D5503722

fbshipit-source-id: ca5d1e684e6b909804ae2be8c2055439dda611f5
2017-07-28 13:02:53 -07:00
Jean Lauliac f332dbee47 metro-bundler: Resolver @format
Reviewed By: cpojer

Differential Revision: D5514920

fbshipit-source-id: 59b8ab3555aca1703b22049382f39d1d67401c4f
2017-07-28 13:02:53 -07:00
David Aurelio 2dda50893f Saner entry point
Summary: makes flow typing for the entry point more sound and fixes two issues

Reviewed By: BYK

Differential Revision: D5507650

fbshipit-source-id: 6b03f7de792ffcece4d0d61950e136a61ea7db2e
2017-07-27 18:15:34 -07:00
Dmitry Zakharov 43457e6674 Make intentions clearer in code of require.js
Reviewed By: javache

Differential Revision: D5479898

fbshipit-source-id: de73d5cffed4200b81f1d8335a3962a37702df63
2017-07-27 13:59:47 -07:00
Jean Lauliac 1a75751a3b metro-bundler: hash enableBabelRCLookup in global cache
Reviewed By: mjesun

Differential Revision: D5502800

fbshipit-source-id: f6cb01e57a3a385c256f1e77420ca670fe77e5de
2017-07-27 12:29:58 -07:00
Jean Lauliac c37f730c57 metro-bundler: 0.11.0
Reviewed By: davidaurelio

Differential Revision: D5494606

fbshipit-source-id: 2049fe162b76fa6ffeec9f87871276057d84f892
2017-07-27 11:51:18 -07:00
Jean Lauliac 14b88b6ad4 metro-bundler: @format lib/
Reviewed By: cpojer

Differential Revision: D5493458

fbshipit-source-id: 05ac2895125b1419996a66f3ef155bc2cec11c02
2017-07-26 12:24:22 -07:00
Christoph Nakazawa 521e25bded Improve Metro's TransformError message for transform errors.
Reviewed By: davidaurelio

Differential Revision: D5470538

fbshipit-source-id: dea3e798c26964bb789917e73bb06a7629af7aa4
2017-07-25 13:54:43 -07:00
Jean Lauliac ce0da03a05 metro-bundler: moar @format
Reviewed By: mjesun

Differential Revision: D5484885

fbshipit-source-id: f9ae126931f0c9f611ee5b5b96243656e86f4ba4
2017-07-24 22:37:19 -07:00
Jean Lauliac 9f1cce4e89 metro-bundler: bundle test: fix test for no polyfills
Reviewed By: mjesun

Differential Revision: D5481856

fbshipit-source-id: b5516d7d74ba15886f1126f6d881a66559d0fb1e
2017-07-24 22:37:19 -07:00
Jean Lauliac 5ba56250b5 metro-bundler: remove hardcoded AssetRegistry path
Reviewed By: davidaurelio

Differential Revision: D5452553

fbshipit-source-id: e0a6f56d3bc03f4ba7f34fbee1ae418495dcc6cd
2017-07-24 17:07:30 -07:00
Jean Lauliac 74e78ee43f metro-bundler: @format node-haste subdir
Summary: Format everything, one subdir at a time.

Reviewed By: mjesun

Differential Revision: D5481590

fbshipit-source-id: 6d9157e6857d61b8116bcf9285bd4be415c5ba01
2017-07-24 15:30:30 -07:00
James Ide 0f3d7117d4 Add an option to enable/disable .babelrc lookup
Summary:
By default, when Babel transforms a file, it looks for .babelrc in the file's directory and all parent directories until it finds a .babelrc file. This means that when Metro tries to transform `<PROJECT_ROOT>/node_modules/dep/mod.js`, it searches for `<PROJECT_ROOT>/node_modules/dep/.babelrc`. If that .babelrc actually exists, Babel will try to apply it.

In practice, this often causes problems because packages that include .babelrc often do so unintentionally -- they don't intend for the package consumer to look at that .babelrc file. One thing we've done a lot is `rm` all .babelrc files under node_modules -- this commit effectively achieves the same in a less destructive way by telling Babel not to look up .babelrc files. (To clarify, Metro will still apply the .babelrc file in the project root.)

Since the current behavior is to look at .babelrc files, this commit keeps that behavior for now. We'll consider overriding the default behavior (that is, making Babel not lookup .babelrc files) in the default configuration of Expo/RN projects. If this goes well and we empirically find that people are having a better time, we may want to consider flipping this option's default in Metro, so that Metro tells Babel not to look up .babelrc files by default.
Closes https://github.com/facebook/metro-bundler/pull/31

Differential Revision: D5469620

Pulled By: jeanlauliac

fbshipit-source-id: fe7a1042feafff843e1a6d8cc9487eb6ff8e8358
2017-07-24 13:43:26 -07:00
Jean Lauliac 42d61ea63a metro-bundler: global cache: add uri info to the FetchFailedError
Reviewed By: davidaurelio

Differential Revision: D5451939

fbshipit-source-id: 8fa460f714919488ab7a592e123e91adde4ed4c2
2017-07-24 12:09:46 -07:00
Jean Lauliac fd6c2a4013 v0.10.0
Summary: Closes https://github.com/facebook/metro-bundler/pull/32

Differential Revision: D5469676

Pulled By: jeanlauliac

fbshipit-source-id: 68cf83d43582fa0543e28810df48915911760ce3
2017-07-21 04:54:57 -07:00