Looking at your Gruntfile I noticed this is the flow:
- At first uglify is run.
- Watch plugin looks for changes
- You save a watched js file
- Change is detected
- The watched file is minified into the watched directory → back to step 4.
Step 5 causes an infinite loop. Apparently this results into what you just described. In other words: You shouldn't save the minified file to the watched directory.