I prefer agreeing multiple small bits of work each one priced separately, and them invoicing them in a bulk for some period of time (e.g. a week, or a month).
For me it has a lot advantages:
First, it helps me to identify the work which will be the most valuable for the client, or work that is interesting or educational for me, work where I can create the most value per hour, or combination of the above.
Compared to one big monolith fixed price contract it helps being "Agile", adjusting the project scope according to clients feedback, the learnings from the process, allows to prioritise and choose the most important and valuable bits of work.
Starting with a small test work is also very helpful for “testing the waters” with the new clients: instead of negotiating a bulletproof legal contract that would provide for all disagreements, I’d rather cut the small losses and walk away from collaboration that doesn’t work.