Preheat your oven to 350°F (175°C). Grease and flour three 9-inch round cake pans.
In a large bowl, whisk together flour, sugar, baking powder, baking soda, salt, cinnamon, nutmeg, and ginger.
In a separate bowl, beat together oil and eggs until smooth.
Add the dry ingredients to the wet mixture in batches, mixing until just combined.
Fold in the grated carrots, crushed pineapple, and nuts if using.
Divide the batter evenly among the three prepared pans.
Bake for 25-30 minutes, or until a toothpick inserted into the center comes out clean.
Let the cakes cool in the pans for about 10 minutes, then transfer to wire racks to cool completely.
Beat the butter and cream cheese together until creamy and smooth.
Gradually add powdered sugar and vanilla, beating until smooth and fluffy. Add heavy cream if the frosting is too thick.
Place one cake layer on a serving plate. Spread a layer of frosting over the top.
Repeat with the second layer, adding frosting between each layer.
Top with the final layer and spread frosting on the top and sides of the cake.
Garnish with more nuts or shredded carrots on top if desired.
