PR-URL: https://github.com/nodejs/node/pull/53187 Fixes: https://github.com/nodejs/node/issues/53176 Refs: https://github.com/nodejs/node/issues/53176 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2.1 KiB
Building Node.js with Ninja
The purpose of this guide is to show how to build Node.js using Ninja, as
doing so can be significantly quicker than using make
. Please see
Ninja's site for installation instructions (Unix only).
Ninja is supported in the Makefile. Run ./configure --ninja
to configure
the project to run the regular make
commands with Ninja.
When modifying only the JS layer in lib
, you can use:
./configure --ninja --node-builtin-modules-path "$(pwd)"
For example, make
will execute ninja -C out/Release
internally
to produce a compiled release binary, It will also execute
ln -fs out/Release/node node
, so that you can execute ./node
at
the project's root.
When running make
, you will see output similar to the following
if the build has succeeded:
ninja: Entering directory `out/Release`
[4/4] LINK node, POSTBUILDS
The bottom line will change while building, showing the progress as
[finished/total]
build steps. This is useful output that make
does not
produce and is one of the benefits of using Ninja. When using Ninja, builds
are always run in parallel, based by default on the number of CPUs your
system has. You can use the -j
parameter to override this behavior,
which is equivalent to the -j
parameter in the regular make
:
make -j4 # With this flag, Ninja will limit itself to 4 parallel jobs,
# regardless of the number of cores on the current machine.
Note: if you are on macOS and use GNU Make version 3.x
, the -jn
flag
will not work. You can either upgrade to v4.x
(e.g. using a package manager
such as Homebrew) or use make JOBS=n
.
Producing a debug build
To create a debug build rather than a release build:
./configure --ninja --debug && make
Customizing ninja
path
On some systems (such as RHEL7 and below), the Ninja binary might be installed
with a different name. For these systems use the NINJA
env var:
./configure --ninja && NINJA="ninja-build" make