Hacker News new | ask | show | jobs
by bsou 3521 days ago
Alternative stack that gets you much of the same stuff with less:

TypeScript, React, Redux, Webpack, Immutable, Ava

- TypeScript covers much of the benefit of es6/babel/eslint/flow, Ava covers chai/mocha, and webpack can cover most of what gulp provides

2 comments

Yeah ultimately what all this is trying to achieve is to make JavaScript have the basic properties and benefits of many other languages. Unlike other languages, JavaScript was developed in 10 days in 1995 and was never intended to be used as heavily as it is today, hence the gargantuan amount of packages and modules to rectify it's shortcomings.
There are many alternatives to chai/mocha. Ava, Jest and Tape.

I wouldn't consider Webpack an alternative to Gulp. Gulp is more generic. But if you use Webpack you can replace to task-runner part with a few scripts.

When using ES6 or TypeScript I'd also consider Immutable to be optional, because of "const" and "Object.assign()/Spread-Operator".

Also, React & Redux can be replaced with 1 thing, when you use a framework that bundles view components and state management.

Webpack is weird in that it's lumped with task runners/"Make"-like programs but it actually it's a configurable and hackable version of the browser asset pipeline.
Nit: not sure why you mention const. It does not provide any kind of immutability assurance.
I just use const instead of var/let all the time and it prevented me from overriding the variable later, which forced me to write my code a bit more functional then before I used it.

I know that I can still change indirect references or override valueOf() etc.

You probably know this, but for anyone else reading, the problem is that if you assign an object or array using const, the object/array members are still mutable. If you have a tree structure, you have to recursively Object.freeze the entire tree to get immutability, which AFAIK is basically what immutable.js does for you. I also use const by default, but I find that more often than not my variables are trees and lists.