Below you'll find all necessary information to flash a NodeMCU firmware binary to ESP32. Note that this is a reference documentation and not a tutorial with fancy screen shots. Turn to your favorite search engine for those.

Attention

Keep in mind that the ESP32 needs to be put into flash mode before you can flash a new firmware!

Tool overview

esptool.py

A Python-based, open source, platform independent, utility to communicate with the ROM bootloader in Espressif ESP8266.

Source: https://github.com/espressif/esptool

Supported platforms: OS X, Linux, Windows, anything that runs Python

Execute make flash to build and flash the firmware. See Flashing Options for the configuration of esptool.py.

NodeMCU PyFlasher

Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython.

NodeMCU PyFlasher

Source: https://github.com/marcelstoer/nodemcu-pyflasher

Supported platforms: anything that runs Python, runnable .exe available for Windows and .dmg for macOS

Supports flashing aggregated binaries as for example produced by the Docker build.

Disclaimer: the availability of NodeMCU PyFlasher was announced on the NodeMCU Facebook page but it is not an official offering of the current NodeMCU firmware team.