Introduction

JavaScript build tools & automation systems

Webpack [GitHub Stars: 39452] is one of the latest front-end dev tools. It is a module bundler that creates a dependency graph with all the modules needed for your JavaScript application. Webpack packages them into one or several small bundles to be loaded by a browser. Beyond that, it is often used as a task runner, because it analyzes dependencies between modules and generates assets.

[GitHub Stars: 39452] is one of the latest front-end dev tools. It is a module bundler that creates a dependency graph with all the modules needed for your JavaScript application. Webpack packages them into one or several small bundles to be loaded by a browser. Beyond that, it is often used as a task runner, because it analyzes dependencies between modules and generates assets. Gulp [GitHub Stars: 29111] has been released after Grunt and, despite the fact that it is another task runner; it takes an absolutely different approach, defining tasks as JavaScript functions. It automates painful tasks, offers a large ecosystem (over 3475 plugins), and provides better transparency and control over the processes.

[GitHub Stars: 29111] has been released after Grunt and, despite the fact that it is another task runner; it takes an absolutely different approach, defining tasks as JavaScript functions. It automates painful tasks, offers a large ecosystem (over 3475 plugins), and provides better transparency and control over the processes. Browserify [GitHub Stars: 11879] allows software developers to employ node.js style modules in a browser. You define the dependencies and it bundles them into a neat JS file. As a result, JavaScript files can be included using “require” statements and enable modules' import from npm.

[GitHub Stars: 11879] allows software developers to employ node.js style modules in a browser. You define the dependencies and it bundles them into a neat JS file. As a result, JavaScript files can be included using “require” statements and enable modules' import from npm. Task runners like Grunt [GitHub Stars: 11760] are used for one major purpose – automation of repetitive and time-consuming tasks. It comes with a huge ecosystem (over 6373 plugins), though currently, JavaScript developers tend to apply more advanced tools.

[GitHub Stars: 11760] are used for one major purpose – automation of repetitive and time-consuming tasks. It comes with a huge ecosystem (over 6373 plugins), though currently, JavaScript developers tend to apply more advanced tools. The main idea behind Brunch.io [GitHub Stars: 6416] is simplicity and speed. It comes with light and simple configuration and detailed documentation for a quick start. Brunch automatically creates a source map for your JavaScript files, together with CSS stylesheets, simplifying the debugging process on the client side.

[GitHub Stars: 6416] is simplicity and speed. It comes with light and simple configuration and detailed documentation for a quick start. Brunch automatically creates a source map for your JavaScript files, together with CSS stylesheets, simplifying the debugging process on the client side. Yeoman [GitHub Stars: 765] is a multi-operated tool since it can be used with any programming language (JavaScript, Python, C#, Java, etc.). It is a basic scaffolding system for web app development with a rich ecosystem (7412 plugins) and ability to create the new generators. Yeoman allows developers to quickly create new projects and facilitate the maintenance of the existing ones.

JavaScript IDE & editors

Visual Studio Code [GitHub Stars: 47195] is backed by Microsoft and fitted with the ultimate support for TypeScript right out of the box. It offers smart completions and syntax highlighting with IntelliSense, debugging right from the editor, built-in Git commands, version control, and so on. Moreover, the functionality of VS Code can be enriched with multiple extensions.

[GitHub Stars: 47195] is backed by Microsoft and fitted with the ultimate support for TypeScript right out of the box. It offers smart completions and syntax highlighting with IntelliSense, debugging right from the editor, built-in Git commands, version control, and so on. Moreover, the functionality of VS Code can be enriched with multiple extensions. Atom [GitHub Stars: 44261] from the GitHub team is the number 1 choice for lots of people. It's an easily customizable text editor that comes with multiple features right out of the box. Atom includes embedded package manager, smart auto-completion, file system browser, cross-platform support, and some other useful functions.

[GitHub Stars: 44261] from the GitHub team is the number 1 choice for lots of people. It's an easily customizable text editor that comes with multiple features right out of the box. Atom includes embedded package manager, smart auto-completion, file system browser, cross-platform support, and some other useful functions. Brackets [GitHub Stars: 28832] is a lightweight open-source text editor. It is mainly focused on visual tools and preprocessor support, to make it easier for you to design in the browser. Brackets comes with convenient real-time preview and powerful inline editors.

[GitHub Stars: 28832] is a lightweight open-source text editor. It is mainly focused on visual tools and preprocessor support, to make it easier for you to design in the browser. Brackets comes with convenient real-time preview and powerful inline editors. JS Beautifier [GitHub Stars: 5379] re-formats and re-structures JavaScript and bookmarklets, and makes them prettier. Besides that, this helper can unpack and deobfuscate scripts, make JSONP and JSON readable, and much more. It can be used on the command-line (Node.js or Python) or right in a web browser. It can be also extended with Prettify to beautify HTML and CSS.

[GitHub Stars: 5379] re-formats and re-structures JavaScript and bookmarklets, and makes them prettier. Besides that, this helper can unpack and deobfuscate scripts, make JSONP and JSON readable, and much more. It can be used on the command-line (Node.js or Python) or right in a web browser. It can be also extended with to beautify HTML and CSS. WebStorm is a powerful IDE for advanced JavaScript development. It offers support for various frameworks and stylesheet languages, both web and server, mobile and desktop. WebStorm can be seamlessly integrated with additional tools like test runners, linters, builder, etc. It comes with such functions as code completion, immediate error detection, navigation, embedded terminal, rich plugin ecosystem, and much more.

is a powerful IDE for advanced JavaScript development. It offers support for various frameworks and stylesheet languages, both web and server, mobile and desktop. WebStorm can be seamlessly integrated with additional tools like test runners, linters, builder, etc. It comes with such functions as code completion, immediate error detection, navigation, embedded terminal, rich plugin ecosystem, and much more. Sublime Text is an advanced cross-platform text editor available for Windows, Linux, and Mac. The tool offers quick navigation with shortcuts support, multiple selections for several changes at a time, split editing support, package control system with over 4453 packs, and lot more.

JavaScript documentation tools

JSDoc [GitHub Stars: 7659] toolkit automatically generates template-formatted, multi-page text-based documentation (HTML, JSON, XML, etc.) from comments in the JavaScript source code. Written in JS, this application can come in handy while managing large-scale projects.

[GitHub Stars: 7659] toolkit automatically generates template-formatted, multi-page text-based documentation (HTML, JSON, XML, etc.) from comments in the JavaScript source code. Written in JS, this application can come in handy while managing large-scale projects. Swagger [GitHub Stars: 6526] is generally a set of rules and tools for describing APIs. And here's the thing, it is a language-agnostic utility for getting everyone (both developers and non-developers) on the same page. Swagger creates clear documentation that is both machine and human readable, allowing for automation of API-dependent processes.

[GitHub Stars: 6526] is generally a set of rules and tools for describing APIs. And here's the thing, it is a language-agnostic utility for getting everyone (both developers and non-developers) on the same page. Swagger creates clear documentation that is both machine and human readable, allowing for automation of API-dependent processes. Docco [GitHub Stars: 3327] is a free documentation tool written in Literate CoffeeScript. It generates HTML doc to display your comments mingled with your code. It is not restricted to JavaScript only since there are versions for Python, Ruby, Clojure, and others.

[GitHub Stars: 3327] is a free documentation tool written in Literate CoffeeScript. It generates HTML doc to display your comments mingled with your code. It is not restricted to JavaScript only since there are versions for Python, Ruby, Clojure, and others. YUIDoc [GitHub Stars: 844] is a Node.js app that follows the same principles of generating API documentation from comments in source code. It uses syntax similar to Javadoc and Doxygen tools and offers live previews, extensive language support, and advanced markup.

JavaScript testing tools

Jest [GitHub Stars: 16699] is a feature-rich testing framework offered and supported by Facebook. It easily collects code coverage reports with no need for extra setup or libraries. Users can run parallel tests to maximize their performance. Moreover, it can be easily applied for testing React and React Native projects with zero configuration, just right out of the box.

[GitHub Stars: 16699] is a feature-rich testing framework offered and supported by Facebook. It easily collects code coverage reports with no need for extra setup or libraries. Users can run parallel tests to maximize their performance. Moreover, it can be easily applied for testing React and React Native projects with zero configuration, just right out of the box. Mocha [GitHub Stars: 15058] is a functional test framework that runs on Node.js and in a browser. Being a “go-to” solution for many developers, it conducts tests in series to provide accurate and flexible reporting, while making asynchronous tests fun and easy. Mocha is often paired with Chai for verifying the test results.

[GitHub Stars: 15058] is a functional test framework that runs on Node.js and in a browser. Being a “go-to” solution for many developers, it conducts tests in series to provide accurate and flexible reporting, while making asynchronous tests fun and easy. Mocha is often paired with Chai for verifying the test results. Jasmine [GitHub Stars: 13409] is a behavior-driven development (BDD) framework for testing your JavaScript code. There are no external dependencies and it doesn't require DOM to kick-start. To make test writing easier and faster, it has a clean and understandable syntax. It can be also used for testing Node.js, Python and Ruby code.

JavaScript debugging tools

Node Inspector [GitHub Stars: 12075] is a debugging interface for server code. It enables remote debugging, real-time edits of an operating code, breakpoints setup, source files' navigation, and much more. It is based on Blink Developer Tools (previously WebKit Web Inspector).

[GitHub Stars: 12075] is a debugging interface for server code. It enables remote debugging, real-time edits of an operating code, breakpoints setup, source files' navigation, and much more. It is based on Blink Developer Tools (previously WebKit Web Inspector). React Dev Tools [GitHub Stars: 6648] allows developers to inspect React component hierarchy, together with its state and props. The solution is available both as an extension for Chrome and Firefox and as a standalone application that works with various environments like IE, Safari and React Native.

[GitHub Stars: 6648] allows developers to inspect React component hierarchy, together with its state and props. The solution is available both as an extension for Chrome and Firefox and as a standalone application that works with various environments like IE, Safari and React Native. JavaScript Debugger [GitHub Stars: 3645] from Mozilla Developer Network (MDN) can be used as a stand-alone web app for debugging code in other browsers and in Node.js. Firefox offers local and remote functionality, as well as the ability to debug code running on Android device with Firefox for Android.

[GitHub Stars: 3645] from Mozilla Developer Network (MDN) can be used as a stand-alone web app for debugging code in other browsers and in Node.js. Firefox offers local and remote functionality, as well as the ability to debug code running on Android device with Firefox for Android. Augury [GitHub Stars: 1461] is a Chrome extension for visualizing and debugging Angular 2 applications. It allows Angular developers to get direct insight into app structure, operating characteristics, and change detection.

[GitHub Stars: 1461] is a Chrome extension for visualizing and debugging Angular 2 applications. It allows Angular developers to get direct insight into app structure, operating characteristics, and change detection. ng-inspector [GitHub Stars: 800] is an extension for Firefox, Chrome and Safari browsers to help developers with building, understanding, and debugging AngularJS applications. This utility comes with real-time updates, DOM highlighting, immediate access to scopes, models, and other apps' elements.

[GitHub Stars: 800] is an extension for Firefox, Chrome and Safari browsers to help developers with building, understanding, and debugging AngularJS applications. This utility comes with real-time updates, DOM highlighting, immediate access to scopes, models, and other apps' elements. Chrome Dev Tools[GitHub Stars: 686] kit includes multiple utilities for debugging JavaScript code, editing CSS and testing apps' performance.

Security tools

RetireJS [GitHub Stars: 1613] is an open-source dependency checker. It includes various components, like a command-line scanner, Grunt plugin, Firefox and Chrome extensions, Burp and OWASP ZAP plugins. Retirejs collects the vulnerability information from the NIST NVD and other sources, like bug-tracking systems, blogs, and mailing lists.

[GitHub Stars: 1613] is an open-source dependency checker. It includes various components, like a command-line scanner, Grunt plugin, Firefox and Chrome extensions, Burp and OWASP ZAP plugins. Retirejs collects the vulnerability information from the NIST NVD and other sources, like bug-tracking systems, blogs, and mailing lists. Node Security Project [GitHub Stars: 1525]offers useful tools for scanning dependencies and detecting vulnerabilities. NSP uses its own data storage, built from npm modules' scans, as well as data from sharable databases like NIST National Vulnerability Database (NVD). On the top of that, NSP provides integration with GitHub Pull Request and CI software, real-time checks, alerts, and recommendations on how to handle vulnerabilities within your Node.js app.

[GitHub Stars: 1525]offers useful tools for scanning dependencies and detecting vulnerabilities. NSP uses its own data storage, built from npm modules' scans, as well as data from sharable databases like NIST National Vulnerability Database (NVD). On the top of that, NSP provides integration with GitHub Pull Request and CI software, real-time checks, alerts, and recommendations on how to handle vulnerabilities within your Node.js app. Snyk [GitHub Stars: 1041] is a powerful tool for discovering, fixing, and preventing known vulnerabilities in JavaScript, Java, and Ruby applications. The service has its own database of vulnerabilities and takes the data from the NSP and the NIST NVD. It allows developers to obviate the security risks using patches and upgrades offered by the company. There are several pricing plans, including a free one for individuals and startups.

[GitHub Stars: 1041] is a powerful tool for discovering, fixing, and preventing known vulnerabilities in JavaScript, Java, and Ruby applications. The service has its own database of vulnerabilities and takes the data from the NSP and the NIST NVD. It allows developers to obviate the security risks using patches and upgrades offered by the company. There are several pricing plans, including a free one for individuals and startups. Gemnasium is a commercial tool with a free trial option. It supports various technologies and packagers, including Ruby, PHP, Bower (JavaScript), Python, and npm (JavaScript). Gemnasium security tool comes with helpful features, like auto-update, real-time alerts, security notifications, and Slack integration.

is a commercial tool with a free trial option. It supports various technologies and packagers, including Ruby, PHP, Bower (JavaScript), Python, and npm (JavaScript). Gemnasium security tool comes with helpful features, like auto-update, real-time alerts, security notifications, and Slack integration. OSSIndex supports various ecosystems (Java, JavaScript, and .NET/C#) and multiple platforms, like NuGet, npm, Bower, Chocolatey, Maven, Composer, Drupal, and MSI. It gathers the information about vulnerabilities from the National Vulnerability Database, various security feeds, and contributions, made by the community.

Code optimization & analysis tools

In fact, TypeScript [GitHub Stars: 32667] is a programming language introduced and backed by Microsoft. But besides that, it is a super set of JavaScript that both shares the basic types with JS and offers a few extra. Initially, TS is intended for large app development, that's why it includes highly-efficient tools and approaches like code refactoring or static checking. TypeScript is transpiled to plain and readable JavaScript that operates in any browser, Node.js, or any other JS engine with support for ECMAScript 3 or higher.

[GitHub Stars: 32667] is a programming language introduced and backed by Microsoft. But besides that, it is a super set of JavaScript that both shares the basic types with JS and offers a few extra. Initially, TS is intended for large app development, that's why it includes highly-efficient tools and approaches like code refactoring or static checking. TypeScript is transpiled to plain and readable JavaScript that operates in any browser, Node.js, or any other JS engine with support for ECMAScript 3 or higher. Flow [GitHub Stars: 15998] is a static code checker for JavaScript source developed by Facebook. To screen for errors it uses static type annotations. In fact, types are the parameters set by developers and Flow makes sure that your software meets the requirements.

[GitHub Stars: 15998] is a static code checker for JavaScript source developed by Facebook. To screen for errors it uses static type annotations. In fact, types are the parameters set by developers and Flow makes sure that your software meets the requirements. ESLint [GitHub Stars: 11019] is an open source linting tool for JSX and JavaScript web applications. It helps to discover deprecated patterns or find code that doesn't comply with specific style guidelines. It allows developers to detect errors in the JS code without having to execute it, thus saving time. Being written in Node.js it offers a prompt runtime environment and smooth installation through npm.

[GitHub Stars: 11019] is an open source linting tool for JSX and JavaScript web applications. It helps to discover deprecated patterns or find code that doesn't comply with specific style guidelines. It allows developers to detect errors in the JS code without having to execute it, thus saving time. Being written in Node.js it offers a prompt runtime environment and smooth installation through npm. JSHint [GitHub Stars: 7897] is a flexible community-driven tool that helps to discover errors and potential issues in your JS code. The main goal of this static code analysis tool is to help JavaScript engineers with complex programs. It is able to detect syntax errors, implicit data type conversion, or leaking variables, though it can't define whether your software is fast, well-behaved, or includes some memory leaks. JSHint is the fork of JSLint.

[GitHub Stars: 7897] is a flexible community-driven tool that helps to discover errors and potential issues in your JS code. The main goal of this static code analysis tool is to help JavaScript engineers with complex programs. It is able to detect syntax errors, implicit data type conversion, or leaking variables, though it can't define whether your software is fast, well-behaved, or includes some memory leaks. JSHint is the fork of JSLint. JSLint [GitHub Stars: 3123] is a web-based analytical tool for verifying JavaScript code quality. As soon as it detects a problem in the source, it returns a message with the problem description and its approximate location in the code. JSLint is capable of analyzing some style conventions and disclosing syntax errors and structural issues.

Version control tools

In recent years Git [GitHub Stars: 21665] has become a widely-used version control system for both small and large-scale projects. This free utility offers outstanding operating speed and efficiency. Its popularity can be easily explained by the highly-distributed system and different type of controls, as well as a staging area, where commits can be reviewed and formatted right before completing the commit.

[GitHub Stars: 21665] has become a widely-used version control system for both small and large-scale projects. This free utility offers outstanding operating speed and efficiency. Its popularity can be easily explained by the highly-distributed system and different type of controls, as well as a staging area, where commits can be reviewed and formatted right before completing the commit. Subversion or SVN [GitHub Stars: 236] has gained a huge popularity and it is still widely employed by open source projects and top platforms like Python Apache or Ruby. This CVS comes with lots of functions, enabling versioning of directories as first-class files, atomic commits, versioning or various operations (renaming, copying, deleting, etc.), merge tracking, file locking, and many others.

Package & dependency management tools

Yarn [GitHub Stars: 31011] is a relatively new kid on the block, though it has already stolen the scene thanks to its promoters: Google, Facebook, Tilde, and Exponent. It's gained a reputation of a smart improvement, as compared with npm. The main focus in brought on security, speed and consistency. This tool enables code sharing via packages or modules, together with a file that describes the package.

[GitHub Stars: 31011] is a relatively new kid on the block, though it has already stolen the scene thanks to its promoters: Google, Facebook, Tilde, and Exponent. It's gained a reputation of a smart improvement, as compared with npm. The main focus in brought on security, speed and consistency. This tool enables code sharing via packages or modules, together with a file that describes the package. npm [GitHub Stars: 15955] stands for node package manager, though its packages can be used for both front-end and back-end. It is a package management system for JavaScript and the largest software registry in the world, numbering over 650,000 free modules.

[GitHub Stars: 15955] stands for node package manager, though its packages can be used for both front-end and back-end. It is a package management system for JavaScript and the largest software registry in the world, numbering over 650,000 free modules. Duojs [GitHub Stars: 3551] takes the best practices from Browserify, Component, and Go turning front-end development into a fast and easy process. The main idea behind Duo is to simplify writing of modular components and making enterprise web app development painless and fast.

Some companies also use JavaScript obfuscator tool to protect the code. The utility makes the source harder to understand, reuse, or modify without authorization, thus keeping the JS code original.

to protect the code. The utility makes the source harder to understand, reuse, or modify without authorization, thus keeping the JS code original. JavaScript code coverage tools allow you to track how promptly your source code is tested. Such utilities as Istanbul [GitHub Stars: 7099] help developers make sure that core components are covered, and they haven't missed the edge cases, zero states, etc.

allow you to track how promptly your source code is tested. Such utilities as [GitHub Stars: 7099] help developers make sure that core components are covered, and they haven't missed the edge cases, zero states, etc. There is a huge range of JavaScript animation tools to make web projects unique and eye-catching. These utilities create smooth animations and take user experience to the next level.

[April 2018: Updated]In January 2017 thecommunity has interviewed 64,000 software developers for the annual developer survey . While the results remain unchanged, JavaScript continues to be the most commonly used programming language for the 5th year in a row.Image source: Stack OverflowToday JavaScript serves as a powerful and stable basis for lots of advanced web applications and websites. In capable hands of experienced JS developer, it can take user experience to the next level and provide with rich features and highly-functional components. Its ecosystem accounts dozens of JavaScript tools. It seems that new libraries or frameworks take the dev community by assault nearly every week. So how to choose necessary tools for JavaScript development?Selecting front end tools based on their popularity isn't a bad idea. Widely used JavaScript development tools are more stable, supported by a larger community and eventually more reliable. Rating is another key factor that should be taken into account. We've already shared our research on the best JavaScript libraries and frameworks ; however, advanced JavaScript programming is a difficult task and requires complex approach, especially talking about cross-browser compatibility and further scaling.Below you'll find the ultimate list of JavaScript tools for web developers to help you with various coding tasks. You'll discover helpful instruments to boost the development flow, reduce risks, optimize code, enhance security, and even more. It is a useful guide for business owners to understand their dev teams better.Build tools for cross-platform languages like .Net or Java are a usual thing; however, using such capabilities with JavaScript can seem ridiculous. Though, times change. As soon as developers have started to use JS for large-scale projects, they've faced the issues with scalability, maintenance, security and general performance. This is where build tools can prove to be useful.JavaScript IDEs and editors can become unparalleled assistants with code completion, debugging and crafting quality apps. They quickly configure the working environment and ensure better productivity. IDE or Integrated Development Environment comes with rich functionality and support for AML systems. While editors include only the essential features, ensuring quick start with smooth responsive performance.Documentation turns your application into a glass box, making the inner processes understandable and obvious. It explains how the software operates and how it should be used. Automated documentation tools describe functions and their purposes, thus saving time on analysis and understanding of each in the future.JavaScript testing tools or testing frameworks ensure that software is stable, free of bugs, and ready to be introduced to the end users. With the growing complexity of custom applications, automated tests not just enhance the productivity of the development house, but also help companies stay on schedule and avoid additional costs Debugging code is a time-consuming and laborious task for JS developers. Debuggers can come in handy while debugging thousands of code lines, offering better convenience, and ensuring more accurate results.Open source components are a gift for most companies since they help to speed up custom software development process at no cost. However, such ready-made solutions involve some risks as well. On the average, there are 105 open source components in every application, while 67 percent of apps include security vulnerabilities.Open source is powerful, but it is essential to track the dependencies and mitigate the security risks.To verify JavaScript code quality dev houses usually turn to common activities of functional and unit testing. However, there is another approach that allows developers to check the code quality and its compliance with the coding standards, namely static code analysis.Modern software development houses integrate static code analysis tools in the delivery process to prevent poor code from reaching the production stage.JavaScript version control system is essential for smooth collaboration within a team since it ensures better maintenance of various versions and helps to keep track of changes. With versioning tools, developers can work on the same project simultaneously, without conflicts and misunderstandings. Moreover, these utilities archive each version with all changes, deletions, and appendices.Modern software is stored as packages and retained in repositories. Such packages provide the initial components of an operating system, like applications, libraries, services, and docs. Whereas, package management systems take care of various operations, like installation and upgrades, and make sure the installed software has been approved by package maintainers and developers.The list of best JavaScript tools for custom web app development can go on and on, though we've just mentioned the major categories that serve as the basis for quality products.That being said, each team, project, and skill-set are different. Every tool, system, framework, or library is optional, thus JavaScript development has been reshaped within the last years and it still undergoes sweeping changes. It is very easy to fall into a trap of ever-augmenting complexity or move towards the latest builder every month or two. However, knowledge and experience won't become outdated.We've definitely missed something really interesting, so you are welcome to share your thoughts through email