I think the following example demonstrates a good practice:
https://threejs.org/examples/webgl_loader_gltf
It uses a RGBE equirectangular environment map which is converted to the cubemap format via EquirectangularToCubeGenerator after loading. The final environment map for rendering is then generated with PMREMGenerator/PMREMCubeUVPacker. More information about both classes in this topic: Are there any guides for HDR setups for novices?
You then use a PBR material like MeshStandardMaterial or MeshPhysicalMaterial for your meshes.