Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache package lock when running tests to speed up installation #44520

Conversation

jankaifer
Copy link
Contributor

@jankaifer jankaifer commented Jan 3, 2023

  • Cache pnpm-lock.yaml in test/tmp. It will do so just for tests that don't specify their own dependencies. Default dependencies work with typescript now so it shouldn't be an issue.
  • Improve log messages a bit.

It reduces the time for installation on subsequent runs from 3.5s to .5s
So we get this in dev mode:

createNext 2.3s
├─ init next dev instance 50 µs
├─ createTestDir 2s
│  ├─ createNextInstall 2s
│  │  ├─  enruse swc binary 4.4 ms
│  │  ├─ copy package.json to temp dir 1.1 ms
│  │  ├─ copy packages to temp dir 489 ms
│  │  ├─ linkPackages 762 ms
│  │  │  ├─ prepare packages for packing 38 ms
│  │  │  └─ packing packages 724 ms
│  │  │     ├─ pack create-next-app 587 ms
│  │  │     ├─ pack eslint-config-next 612 ms
│  │  │     ├─ pack @next/eslint-plugin-next 563 ms
│  │  │     ├─ pack @next/font 629 ms
│  │  │     ├─ pack next 563 ms
│  │  │     ├─ pack @next/bundle-analyzer 617 ms
│  │  │     ├─ pack @next/codemod 623 ms
│  │  │     ├─ pack @next/env 624 ms
│  │  │     ├─ pack @next/mdx 611 ms
│  │  │     ├─ pack @next/plugin-storybook 623 ms
│  │  │     ├─ pack @next/polyfill-module 614 ms
│  │  │     ├─ pack @next/polyfill-nomodule 602 ms
│  │  │     ├─ pack @next/swc 625 ms
│  │  │     ├─ pack @next/react-dev-overlay 586 ms
│  │  │     └─ pack @next/react-refresh-utils 628 ms
│  │  └─ run generic install command 665 ms
│  └─ writeInitialFiles 813 µs
└─ start next instance 281 ms

@jankaifer

This comment was marked as outdated.

@jankaifer

This comment was marked as outdated.

@ijjk
Copy link
Member

ijjk commented Jan 3, 2023

Stats from current PR

Default Build (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
buildDuration 36.7s 37.1s ⚠️ +444ms
buildDurationCached 15.8s 11s -4.8s
nodeModulesSize 95.1 MB 95.1 MB
nextStartRea..uration (ms) 279ms 275ms -4ms
Client Bundles (main, webpack)
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
152-HASH.js gzip 64.5 kB 64.5 kB
53.HASH.js gzip 182 B 182 B
main-app-HASH.js gzip 205 B 205 B
main-HASH.js gzip 79.2 kB 79.2 kB
webpack-HASH.js gzip 1.7 kB 1.7 kB
Overall change 146 kB 146 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
_app-HASH.js gzip 192 B 192 B
_error-HASH.js gzip 179 B 179 B
amp-HASH.js gzip 484 B 484 B
css-HASH.js gzip 804 B 804 B
dynamic-HASH.js gzip 2.27 kB 2.27 kB
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 827 B 827 B
hooks-HASH.js gzip 848 B 848 B
image-HASH.js gzip 4.3 kB 4.3 kB
index-HASH.js gzip 252 B 252 B
link-HASH.js gzip 2.69 kB 2.69 kB
routerDirect..HASH.js gzip 782 B 782 B
script-HASH.js gzip 857 B 857 B
withRouter-HASH.js gzip 781 B 781 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 15.6 kB 15.6 kB
Client Build Manifests
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
_buildManifest.js gzip 482 B 482 B
Overall change 482 B 482 B
Rendered Page Sizes
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
index.html gzip 489 B 489 B
link.html gzip 504 B 504 B
withRouter.html gzip 485 B 485 B
Overall change 1.48 kB 1.48 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
edge-ssr.js gzip 110 kB 110 kB
page.js gzip 98.4 kB 98.4 kB ⚠️ +2 B
Overall change 209 kB 209 kB ⚠️ +2 B
Middleware size Overall increase ⚠️
vercel/next.js canary JanKaifer/next.js jankaifer/next-289-speed-up-installation-phase-of-running Change
middleware-b..fest.js gzip 581 B 582 B ⚠️ +1 B
middleware-r..fest.js gzip 145 B 145 B
middleware.js gzip 27 kB 27 kB
edge-runtime..pack.js gzip 1.83 kB 1.83 kB
Overall change 29.6 kB 29.6 kB ⚠️ +1 B

Diffs

Diff for page.js
@@ -8618,16 +8618,16 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1036: /***/ (
+    /***/ 199: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1210)
+        __webpack_require__.bind(__webpack_require__, 2973)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2973)
+        __webpack_require__.bind(__webpack_require__, 1210)
       );
       Promise.resolve(/* import() eager */).then(
         __webpack_require__.bind(__webpack_require__, 6448)
Diff for middleware-b..-manifest.js
@@ -9,7 +9,7 @@ self.__BUILD_MANIFEST = {
   rootMainFiles: [
     "static/chunks/webpack-c452a3e31b73f504.js",
     "static/chunks/152-792c0b16c9234019.js",
-    "static/chunks/main-app-c9a0aaff35eafcb5.js"
+    "static/chunks/main-app-ec4ed0640c5bbc2a.js"
   ],
   pages: {
     "/": [
Diff for main-app-HASH.js
@@ -1,16 +1,16 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [744],
   {
-    /***/ 9915: /***/ function(
+    /***/ 9421: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 429, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1161, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1161, 23)
+        __webpack_require__.t.bind(__webpack_require__, 429, 23)
       );
       Promise.resolve(/* import() eager */).then(
         __webpack_require__.t.bind(__webpack_require__, 8138, 23)
@@ -28,7 +28,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [152], function() {
-      return __webpack_exec__(7070), __webpack_exec__(9915);
+      return __webpack_exec__(7070), __webpack_exec__(9421);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Commit: e33e1ec

@timneutkens timneutkens merged commit a7b046d into vercel:canary Jan 3, 2023
@jankaifer jankaifer deleted the jankaifer/next-289-speed-up-installation-phase-of-running branch January 9, 2023 09:12
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 8, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Next.js team PRs by the Next.js team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants