Of course, that brings with it the disadvantage of needing to be able to write JS in order to configure it, and an additional point of failure (eg your own code).
Make has it's foibles - before we talk about those we need to declare are we talking gmake, nmake, BSD make etc. - our build scripts can break in the wrong make. And how will windows users collaborate (they'll install cygwin). Etc etc
All that said though, I still find make to be lower barrier to entry.
If I need to start a watcher or something, I generally have that in my npm package.json but there's nothing stopping me having a make target to call npm start or whatever.
I forced myself to learn enough gulp to be dangerous (incidentally I see strong parallels between grunt / maven and gulp / gradle) and the faux pipes implementation is clearly influenced by make, it's just far more clunky an implementation.
So it could just be I'm wired up wrongly but I have to agree, neither grunt nor gulp moved the needle meaningfully.
Counter arguments like it's all one language don't hold much water for me, or for the designer who only really knows css.
I'm resigned to being labeled a curmudgeon in this one!
I think part of the issue is that I (and I suspect many others) though I knew basically how make works, except that I had no idea about % patterns, the patsubst function, etc.
var gulp = require('gulp'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify');
gulp.task('js', function(){
return gulp.src(['src/**/*.js'])
.pipe(concat('build.js'))
.pipe(uglify())
.pipe(gulp.dest('.'));
});
gulp.task('default', ['js']);
With grunt; module.exports = function (grunt) {
grunt.initConfig({
concat: {
js: {
files: {'build.js': 'src/**/*.js' }
}
},
uglify: {
bundle: {
files: {'build.min.js': 'bundle.js'}
}
}
});
The bash script is easier for such a trivial job. Gulp and Grunt aren't better if that's all you're doing. They come in to their own when you have a large number of tasks to run. But even then, if you (and your team) prefer make then it's better to use make.We haven't quite come out of the cycle where everything that we already had has to be half-implemented a dozen times in JavaScript/Node...
But when you need more features like bundle splitting (app code and libraries live in separate files, for caching), cache-busting, lazy-loading, separate configs for production and development, etc. make doesn't quite cut it IMO.
But as you said, nothing wrong with Grunt. Indeed feeling the Javascript build tool fatigue , I'm seriously hesitating to do everything in a makefile
I presume, something similar will work for sass too.