At work we use Envoyer to build our assets as part of our deployment. This has removed a lot of the headaches related to merge conflicts.
However, due to this, deployment takes a long time. Even when you just deploy a update to a controller or some other things.
We use these deployment hooks to run npm install and npm run production only if there's been changes to the source files.
The hooks should work as long as your assets are in resources/assets (which was the default up to Laravel 5.7).