If you don't have the restrictions like some of the shared hosting account, where you are not allowed to install composer or do not have shell access all together then you don't require to upload the vendor directory as mentioned by @djt above - you can run composer install on your production server which will populate the vendor directory with all dependencies.
node_nodules folder can also be safely excluded from the ftp uploads, since mostly it contains dependencies for development purpose only. In case you require any of the node_modules for production then with a similar approach, you can just upload the package.json file to your production server and then run npm install to get all the node_modules installed on your production server.
The vendor and node_modules directories are the most bulky, excluding them from ftp will ensure that you are uploading only your application/project code. Hope it helps.