How to create tags for different modules in the same repo

I like the idea of a separate modules repo that has all your modules. But if I tag that repo with, say, v.0.1.0, doesn’t that apply to all the modules in the repo? In your projects, if you have all modules in the same repo, how do you separate the versions of the different modules?

Yes, the tag would apply to all modules in the repo. That’s totally normal; for example, every new release of any open source project (e.g. jquery, guava, react, ember, etc) results in a new version of all “modules” in that repo, even if only one of the modules was actually modified. Tags are cheap and the users of your modules can decide if they want to upgrade or not.

Of course, if it really bothers you, there’s no reason you can’t put your modules into separate repos, each with their own tags. For example, at Gruntwork, our Infrastructure as Code Library is broken across 20-30 repos, each of which contains a bunch of related modules that are versioned together.