I honestly never really took a closer look at this book because of its title; I assumed you wouldn’t name your book “Crafting Interpreters” if it was about compilers as well.
A good interpreter is 80% of a working compiler. Parsing, language level optimization, some kind of intermediate representation are all required for both interpreters and compilers.
Ah, well the compilers I’ve worked on have been for lisps and forths, both of which make parsing and intermediate representation more or less trivial tasks. I could see how these would be a lot more work if you chose to give your language a more complicated syntax.
The most memorable chapters for me are about hashmaps, interning, garbage collector, closures. So, not really about interpretation nor compilation but about runtimes.