Yarn is a package manager which is much faster than NPM, has offline support, and fetches dependencies more predictably. Since it came out in October 2016, it received a very quick adoption and is becoming the new package manager of choice of the JavaScript community.
Gulp is a task runner. It is similar to the tasks located under scripts in package.json
, but writing task in a JS file is simpler and clearer than a JSON file.
Webpack is a tool that import different files and resolve these files using the filesystem. In a browser, there is no filesystem, and therefore imports point to nowhere. In order for entry point file o retrieve the tree of imports it needs, we are going to "bundle" that entire tree of dependencies into one file.
React is an open-source JavaScript library for building user interfaces. React user interfaces are typically rendered using stateful components.
Redux manages the state of the application. It is composed of a store which is a plain JavaScript object representing the state of the app, actions which are typically triggered by users, and reducers which can be seen as action handlers. Reducers affect the application state (the store), and when the application state is modified, things happen in the app. A good visual demonstration of Redux can be found here.
I'm going to lint my code to catch potential issues. ESLint is the linter of choice for ES6 code. Instead of configuring the rules I want for my code, I use the config created by Airbnb.
Flow is a static type checker. It detects inconsistent types in the code and allow to add explicit type declarations in it via annotations.
I use Mocha as my main testing framework. Mocha is easy to use, has tons of features, and is currently the most popular JavaScript testing framework. It is very flexible and modular. In particular, allow using any assertion library. Chai is a great assertion library that has a lot of plugins available.
Inspired by @verekia