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.
Keep in mind that the ESP32 needs to be put 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.
Supported platforms: OS X, Linux, Windows, anything that runs Python
make flash to build and flash the firmware. See Flashing Options for the configuration of esptool.py.
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.