I'm working on a large angular project right now, and we're using Usemin[0] for this. Basically you have your dev version of your html page, including all your scripts separately - and when you run a grunt task, it concatenates all these scripts into one and rewrites your <script> tag accordingly.
[0] https://npmjs.org/package/grunt-usemin