Emacs vs. Webstorm for Node.js development

If you are a developer, you know the struggle of choosing the right tools for your projects. Opting for the right editor or IDE is a great hassle if you don’t have your facts right. In software development, Emacs and WebStorm are two very common names, both of them being tools that support Node.js Development. However, the question arises that which of these two tools should you consider while starting your Node.js project.

Emacs vs. WebStorm for Node.js Development

Node JS Development Services in Hyderabad | Creo Tech Solutions

In this article, I shall guide you through all the details, from big to small, regarding Emacs and Webstorm to help you choose which of these two might be better for your project.


There are a few features that are shared by both Emacs and WebStorm. Firstly, both of them are capable of connecting to external code quality tools such as ESLint. Both of them can connect to these tools and provide real-time code analysis and bug spotting. Secondly, either one of the tools can provide a deep analysis of JavaScript mode. WebStorm has its exclusive JavaScript analysis engine whereas Emacs has its own js2 mode. Both aid in finding the bugs and issues in the code like finding a function that does not return a value and can perform minor tasks such as extracting variables too. Lastly, both the tools greatly support smart auto-completion.  Where Emacs does this through Tern, which is an open-source JS code analyzer that various editors can connect with. On the other hand, WebStorm does it using its own engine which, in addition, parses JSDoc comments and TypeScript descriptor documents.

Why WebStorm?

WebStorm Logo " Sticker by SuperJellyfish | Redbubble

Although Emacs is great yet there are a few things that lie out of its scope and just cannot be done right with it. Disparagingly, few of the peskiest things that Emacs can not do, can be done by WebStorm, making it a great choice for developers.  One of the major aspects of this domain is debugging. The basic debugger in the Node.js is terribly slow. WebStorm emerges as a great alternative in this case. It wouldn’t be wrong to say that this debugger in itself enough to make a developer opt for it over anything else for major JavaScript Development. Though Emacs does have an inbuilt editor for debugging, it fails to work with the default Node.js debugger. Even if it did work, it would’ve been taken back by the utterly sluggish performance of the default debugger.

Definition and Symbol lookup is another incredible component of WebStorm. While Emacs can discover definitions and symbols in a solitary document by means of Tern, WebStorm can really review your entire task and discover a definition, or if nothing else give you a very pruned rundown of contenders to look over. This makes exploring through code exponentially quicker, and it truly diminishes the strain of setting exchanging between documents.

Testing integration is the last enormous success for WebStorm. When utilizing the most well-known JavaScript testing systems, Jasmine and Mocha, WebStorm removes the need for running individual tests, entire test files, and entire test suites with only a couple of keyboard shortcuts.

If we join this last component with debugging and code navigation between documents, WebStorm turns into an astounding TDD tool. Emacs can be inconsequentially set up to run an entire test suite, however not to run individual tests for any of the regular JavaScript testing frameworks. While this is possible in Emacs too, (such integration exists for Ruby’s RSpec tools), nobody has contributed to the opportunity to make it work.

Why Emacs?

Laravel & Emacs - Part 1 | Grok Interactive

Regardless of the considerable number of pros WebStorm has, there are still various things Emacs is better at. One of the most significant of those is auto-completion. I have already mentioned above that both Emacs and WebStorm can do some degree of smart, context-aware completion. The truth of a dynamic scripting language like JavaScrip is that on multiple occasions, there is no relevant completion accessible as there is an excessive vagueness or the code has improper structure.

In these cases, WebStorm simply doesn’t offer any completion, compelling you to type everything physically. Emacs accomplishes something amazing in this case. It basically tokenizes the majority of the words in each buffer of a similar kind, for example, each JavaScript buffer, and takes a gander at the characters you have begun to type and attempts to discover a match. It is nothing but a fact that often in the event that you type around three characters of a word, it will offer you around 3-5 choices of words starting from those three characters. This radically improves the speed as you don’t need to type the whole words to get going.

Something else Emacs is commendable at is Vim emulation. While WebStorm’s Vim copying is good too, but it does encounter bugs frequently. These incorporate bugs like keys not enlisting, getting into abnormal states where you seem to be somewhere between the normal and insert mode, and a peculiarly delicate mouse choice that consistently appears to place you in visual when you didn’t ask it to. Also, some propelled highlights like macros once in a while work directly for rarely work. It also fails to copy things on the system clipboard, which Emacs does as a matter of course. Also, large file editing or micro-driven refactoring is also better done in Emacs.


Like every other app development tool, Emacs and Webstorm too, have their own advantages and disadvantages. A significant disadvantage is automated refactoring. Automated refactoring is an incredibly tricky problem in a dynamic language. Neither Emacs or WebStorm is capable of going beyond extractions or simple variable renames. It can make refactoring across files a wearisome, error-prone process. Similarly, both tools lack at generating code for JavaScript. Either of the tools supports expanding developer-defined templates, but nothing else. WebStorm appears to be at least trying a bit in this regard. Presently, it can generate a method that you call in code, but only into the same file you are in, and it will often call the method wrong. A developer must consider all the points before choosing the right tool and beginning the development so as to utilize the features to their utmost capacity.


Share on facebook
Share on twitter
Share on pinterest
Share on linkedin
<b><strong>Karan Makan</strong></b>

Karan Makan

Technology Engineer and Entrepreneur. Currently working with International Clients and helping them scale their products through different ventures. With over 8 years of experience and strong background in Internet Product Management, Growth & Business Strategy.

On Key

Related Posts

Hook Up on Tinder

Since dating can be stressful, there is the possibility of humor to try to reduce tensions. In a new study published in the Proceedings of

error: Content is protected !!