deepsweet / start

:red_circle: Functional task runner for Node.js
https://start.js.org/
MIT License
476 stars 19 forks source link

Question: differences with gulp #44

Closed g-plane closed 6 years ago

g-plane commented 6 years ago

What're the differences with gulp?

tunnckoCore commented 6 years ago

A whole lot smaller and getting a totally different approach.

And Gulp is "streaming", which in turn is only when you do IO stuff (so, using .src and .pipe stuff). Other than that, Gulp is nothing more than too much code for simple thing like EventEmitter. Not to mention that the main thing - the streaming, is badly implemented and slow.

task('foo', () => {
  // do something
}) 

Isn't that similar to

emitter.on('minify', () => {
  // do stuff
})

and test runners

test('foo bar baz', (t) => {
  t.strictEqual(1, 1)
})

Right? Start and other such task runners are completely different and are using modern features and minimal approaches.

deepsweet commented 6 years ago

In Start everything is a Promise, which is in my opinion much closer to JS ecosystem reality than "everything is a Stream" hackarounds. Plugins are just simple and thin wrappers on top of already existing (in most cases) promise-based APIs, like fast-glob. Tasks are just lazy functions with arguments that wraps plugins. It's functional and composable in general. There is a way to publish "presets" as separate packages with everything included, even Start CLI.

On the other hand if you are totally fine with Gulp I personally see almost no reasons to try something else. Start shines when you like the concept behind.