Also, as I said, those are CLI based, and what more, they are often done by volonteer, so
- Opening a command-line is a prerequisite;
- They won't magically integrate one into another: some assembly is required to make them work as a coherent whole;
- Their documentation can be lacking. A strong Google-fu is essential.
You have been warned.
Node and NPM.
A build automation to run repetitive tasks. Its just so easy to forget somethings in a complex procedure. With grunt, tasks can be automated so they are done the same way every time. It's an ISO-9001 certification for the build. Custom tasks can be coded for special needs, and it's easy to find useful predefined tasks in the immense repository of existing plug-ins. Careful though, Sturgeon law apply for non-official plugin.
A linter to catch CSS syntax errors and problematic rules. Best used with the grunt plugin. Its opinionated nature can get in the way; I suggest relaxing some of the rules.
I am a real fanboy of that one.
A test runner that can run unit tests in any browser. Open a server, point it to your source and test file, connect any browser to the URL it gave you, and be amazed at how you can run unit tests in 10 different browser in less than five second. This blew my mind when I first saw it in action.
What set it appart from similar tools is its compatibility with a grunt workflow. I created a "check" task in grunt that lint the JS files and run test in every supported browser in one short command. For people who run their tests every 5 minutes, this is amazing.
An headless browser that don't require any GUI to run. Finally a browser that can run on a CI server! Great to run smoke and unit tests without an heavy browser sitting on your RAM. Best combined with Karma above and Selenium below. Running it in the background without cluttering the screen is a killer feature.
Pack file together into one big file. If you don't use Browserify, at least use that utility. Jamming 30 script tags in an HTML page is just too hard to maintain. It use it along with my browserified JS bundle to include third party libraries that don't support CommonJS (the browserify/node module format).
Allow you to reload the browser at every change. This is mostly a designer tool, but a very useful one. The Mac App Store version is not free, but the command line version is open source and can be use natively by the grunt-contrib-watch plugin.
Like Karma, it work in any browsers instance capable of opening the URL it give you; I used it on a real iPhone and an Android Phone to do mobile design without moving my hand away from the keyboard to refresh. Pretty cool.
Virtual machine for any version of IE on any Windows, for most virtualization technologies (VMware, Virtual Box, Parallel, Hyper-V). The VM work for one month. Very useful to test against those crufty old version of IE. Especially great for those on a Mac like me. A big thank you to Microsoft for this ^^.
I guess this is my controversial suggestion. A lot of developer prefer their Sublime Text / VIM / Text editor of choice. Me, I find that being able to do an extract method with a simple Cmd + Alt + M is pretty useful to avoid dumb mistakes. Look, just use what you like OK?
Selenium for node
A browser automation tool. I am cautious with Selenium tests; they are by nature end-to-end, and thus usually slow, brittle and hard to maintain. Still, my experience showed me they have their place. Combined with PhantomJS, I use Selenium to run an end-to-end "Smoke Test" that can run the parts of the application that are hard to unit test, like bootstrapping code. This serve to catch errors that I would have missed otherwise.