I’ve been using Underscore.js for quite some time. It’s a very fast, lightweight library that provides a lot of utility functions.
We all know that the latest ECMA spec is not implemented in all the browsers, but that’s why we have Babel. However, I’m optimistic that some day browsers will increase their update cycles so much that we’ll get the latest features in no time.
To get back where we were, I’ve decided to clean up the Underscore.js bloat because there were too many occurrences of _.each, _.map, _.filter, etc. which are really a useless complexity added from my point of view.
There were two big questions I’ve asked myself:
- It’s obvious that _.each/_.map/_.filter should and will be replaced by Array.prototype methods. But why not look for other replacements as well?
As a lazy (efficient) man, I’ve browsed to see if someone already did a list for these and what do you know! This article has a really nice list of replacements that I’ve used to refactor the code by replacing with native solutions.
To sum up: I don’t want to remove Underscore.js, but I also don’t want any other people to use again _.each, so what do I do?
I’ve decided to write some linting code that would fail a pull request containing code I don’t want to allow anymore.
As I already have ESLint at hand, I’ll just have a new rule that lints this.
I browsed several repos for plugins and I found nothing related to Underscore.js. But I discovered a similar ESLint plugin for jQuery.
That was my inspiration and I came up with this:
I really think that ESLint is definitely a big player in a strategy of controlling your project code’s evolution.
Hope this helps anybody out there! 🙂