I would add RequireJS to the list. Being able to think in terms of modules while developing a large application is extremely helpful, and explicitly defining dependencies is great when it comes time to build/concat the project.<p>Mocha is another alternative for testing. It's very flexible and with a little bit of work can be run from the shell (using phantomjs).