Ata Sasmaz

Software Engineer
atIBMin Dublin, Ireland

My Node.js development environment

« Home

I have spent weeks on building the right environment for my node.js development environment.
I believe the more you improve your environment, the faster you implement features and the less defects/bugs you get in return.

That's why I gave big effort on learning automation tools and the right technologies to use with Node.js.
There are many pieces you need to glue together while doing Node.js development.

My environment includes:


React is beautiful. Is it componentized, so fast and it can get along other js libraries very nicely. Also being an expert on React.js means being an expert on both web and mobile app development for high quality apps. React itself is promoted is "Learn once use it everywhere", which is great. Thanks for Facebook for giving this beautiful library.


To utilize React.js and other javascripts, especially to use them both on the server side and client side we need a bundling tool for javascript. Javascripts written for node.js can be easily used on client side but they need to be processed with a tool like Webpack or Browserify.

Honestly I found Browserify faster and more flexible. I like to configure things programmatically and Browserify is great with that but React community seems to support Webpack more. For instance there is Webpack hot loader for loading react modules without refreshing the page. It is also ported to Browserify but Webpack seems to be the first class citizen.


Facebook had a jsx transformer but they abondoned it and said Babel is doing a very good job of transforming React jsx files to .js files. Babel is a must with React.js development. Babel also provides latest ES2015 (formerly ES6) and some ES7 features like async/await.

With Babel 6 they switched to providing transformation features by plugins so to utilize Babel to full you need to configure Babel to use some plugins.


Even if we use Webpack and Babel I found huge benefit of using Gulp, which is a Javascript task automation tool. You can write Javascript tasks and then run them. I run Babel and Webpack inside Gulp and I have some separate production and development tasks. I can deploy to my server with a single command.


There is JSLint, then JSHint forked it and improved on it, then ESLint was developed with "plugin" support. Beauty of ESlint is it supports latest Javascript specs like async/await if you configure it with its plugins. Neither JSLint and JSHint had this support while I was testing them and it seems they preferred to wait for specs to be finalized before using them. Honestly, I feel like I can't write Javascript code without async/await now, it makes the code beautiful and I believe so high in beautiful code.


I use node-forever to keep my processes online. Forever is simple and beautiful. If you need more distributed solution there is PM2 but I found Forever is enough for my needs for now but you really need to configure it to use it to its power.

Disclaimer: Opinions expressed herein are my personal and do not represent my employer’s view.
This website uses cookies for security purposes and anonymous statistics tracking.