Grunt (http://gruntjs.com/) is the de facto standard regarding (frontend) build tools.
But there are alternatives.
Especially gulp (http://gulpjs.com/) is getting a bit of a momentum. gulp has a more “coding” mentality in contrast to the configuration heavy grunt setup. It already has all the essential plugins (jshint, uglify, sass, less, etc…) for a sophisticated build workflow. In my opinion the coding style within the gulpfile offers more readability than the big configuration objects in gruntfiles.
Another way is to (“mis-“)use the “npm run” command to run scripts/commands, which are noted in the “scripts” field within the package.json file. James Halliday wrote a nice blog post about it: http://substack.net/task_automation_with_npm_run.
Of course there are the classical ways to perform a build: make, ant, rake, etc…