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](#putting-device-into-flash-mode) before you can flash a new firmware!
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.
Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython.
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.