Shooting bows or crossbows will not remove ammo. You still need at least one arrow. This also applies to your team-mates by default.
Requirements
.NET Script Framework
Installing
Make sure the framework above is installed properly.
Install this mod with a mod manager or manually. The DLL file from this mod should go here:
Data/NetScriptFramework/Plugins/
It should be safe to install or uninstall mid-playthrough since this mod does not touch save-games in any way.
Uninstalling
Uninstall with your mod manager or remove the DLL file from above path.
Configuration
The configuration file is in /Data/NetScriptFramework/Plugins/InfiniteArrows.config.txt and you can change some stuff, for example:
Make the mod use ammo normally until you only have one left, then it's infinite. Can be useful to get rid of excess ammo that you don't really need to carry around. How to do:
InfiniteArrowsOnlyIfHasThisAmountOrLess = 1
(Edit: set to 2 instead, if you set 1 then there is a visual glitch where if you shoot the last arrow and quickly prepare another it will appear invisible until fired)
Make it so all NPCs are always forced to use ammo. The game usually will not use ammo for NPC unless the weapon they are using is explicitly marked as such. How to make all NPC use ammo regardless:
ForceAllNPCsToUseArrows = True
Make it so only your companion team-mate has infinite ammo but the player still has to use ammo the normal way:
InfiniteArrowsForPlayer = False
InfiniteArrowsForTeamMate = True