From 8b349187b85aac74f4e460e849442aa1eff4ae65 Mon Sep 17 00:00:00 2001 From: Momtchil Momtchev Date: Wed, 9 Dec 2020 13:29:15 +0100 Subject: [PATCH] doc: add two tips for speeding the dev builds Add two important tips for novice Node.js contributors PR-URL: https://github.com/nodejs/node/pull/36452 Reviewed-By: Gireesh Punathil Reviewed-By: Benjamin Gruenbaum Reviewed-By: Franziska Hinkelmann Reviewed-By: Rich Trott Reviewed-By: James M Snell --- BUILDING.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/BUILDING.md b/BUILDING.md index b174ee4e80e163..1d3ea6a8dc69e2 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -30,6 +30,7 @@ file a new issue. * [Building the documentation](#building-the-documentation) * [Building a debug build](#building-a-debug-build) * [Building an ASAN build](#building-an-asan-build) + * [Speeding up frequent rebuilds when developing](#speeding-up-frequent-rebuilds-when-developing) * [Troubleshooting Unix and macOS builds](#troubleshooting-unix-and-macos-builds) * [Windows](#windows) * [Prerequisites](#prerequisites) @@ -526,6 +527,29 @@ $ ./configure --debug --enable-asan && make -j4 $ make test-only ``` +#### Speeding up frequent rebuilds when developing + +If you plan to frequently rebuild Node.js, especially if using several branches, +installing `ccache` can help to greatly reduce build times. Set up with: +```console +$ sudo apt install ccache # for Debian/Ubuntu, included in most Linux distros +$ ccache -o cache_dir= +$ ccache -o max_size=5.0G +$ export CC="ccache gcc" # add to your .profile +$ export CXX="ccache g++" # add to your .profile +``` +This will allow for near-instantaneous rebuilds even when switching branches. + +When modifying only the JS layer in `lib`, it is possible to externally load it +without modifying the executable: +```console +$ ./configure --node-builtin-modules-path $(pwd) +``` +The resulting binary won't include any JS files and will try to load them from +the specified directory. The JS debugger of Visual Studio Code supports this +configuration since the November 2020 version and allows for setting +breakpoints. + #### Troubleshooting Unix and macOS builds Stale builds can sometimes result in `file not found` errors while building.