Most of the stuff in `file.js` was ported from grunt or they were utility functions we had floating around. I could break them into separate modules if you think that would help. I'll take a look around npm to see if there are modules which already implement some of these behaviors.