CoffeeScript Dependency Checking

I just fixed an issue where a dependency (lodash) was leaking out as a global in a CoffeeScript project. The solution to that was to use _.noConflict, but over the years of this project's life, developers had started accidentally using lodash utils without actually requiring lodash in the file.

Unfortunately, the coffeelint tool doesn't seem to have a no-undef rule similar to eslint, so these sort of fell through the cracks. I came up with this method to check our source code for missing requires:

$ ag '_[.( ]' coffee --files-with-matches | \
  xargs ag '(?s).*lodash.*' --files-without-matches

And for a bonus, just flip the matchers to check for files with extraneous requires:

$ ag '_[.( ]' coffee --files-without-matches | \
  xargs ag '(?s).*lodash.*' --files-with-matches
History