Personally, I use Nx. It allows everything to be setup automatically, it enforces the single-package-version policy that works best with NestJS, and overall, it integrates with Nest better than just about anything else, while still allowing for freedom of structure and development.
What will happen to reusable packages, do I have to build it and keep the build dir inside the git repo or move it to private npm package?
That depends, do you actually want to publish it, or do you want it to just get bundled into the applications? I usually just let Nx bundle things in with their webpack/swc config and call it a day. Same thing for react libraries into my react frontend. However, if you want, you are able to set up these libraries to b e publishable
Reusable package has it own Nest.js dependencies and my service also has. Is it not making the service weight more?
Those should set the @nestjs/ packages as peerDependencies and all of the microservices should use the same workspace version of Nest rather than installing the nest packages into multiple node_moduels directories. trust me, you'll thank me later