Why task runners?
To explain why we need task runners I will start with explaining a popular principle “dry” which means Do Not Repeat i.e if you need to do a task again and again then find the most efficient way to reduce the burden.

What is task runner?
Task runner is basically a program that can execute tasks based on specific criteria. While developing softwares we often find ourselves doing the same tasks repeatedly like optimising images, minifying code, linting, running tests, spinning up development servers and compiling code.
Repeating these tasks over and over again costs us a lot of time. So instead of doing these tasks manually we can use task runners and write instructions for running these tasks in a particular order or in particular environment.
While developing front-end we need to watch the file changes, minifying files, prefixing files for different browsers and all of these need to be automated. Before task runners, all these tasks were often done using bash or shell scripts.

Following are the few options available for different languages :
- JavaScript — Gulp or Grunt
- Ruby — Rake or Thor
- Java — Ant or Gradle
- Python — Fabric
- Scala — SBT
There are a lot of options available for many languages and with communities of contributing developers, new plug-ins are added all the time. The final product of these task runners is to produce a packaged code which is ready to be used into a production.
Task runners can save us a lot of time. People use task runners to compile different builds of an application depending on production or local environment. These tasks after being wrapped in a task runner become effortless.
Happy task running!
