• Stars
    star
    235
  • Rank 171,079 (Top 4 %)
  • Language
    HTML
  • License
    Creative Commons ...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🧰 Up-to-date list of JavaScript and TypeScript tooling resources

JavaScript and TypeScript tooling overview

GitHub contributors GitHub issues GitHub GitHub stars

A quick and up-to-date overview of existing build and developer tools for JavaScript and TypeScript.

The intended audience is project maintainers and tool authors. The list is selective; non-recommended tools are listed separately. Existing resources with a similar focus on tooling are listed at the end; the motivation for this list is filling a gap in them.

The list format includes links to project homepages (if they exist), GitHub pages, and npm trends comparisons where applicable. The format differs from the awesome template by being slightly more detailed and opinionated.

Criticism, adding omissions and other contributions are welcome.

πŸ”₯ Zero-config presets

npm trends πŸ“ˆ

Presets, generators or initializers that don't require configuration to start using them. Presets are recommended when starting out and to save the time and effort of building and maintaing a custom stack, but can be limited in certain aspects.

  • @pika/pack (GitHub)
    • Build npm packages using composable plugins
  • nwb (GitHub)
    • Toolkit for quick development with React, Inferno, Preact or vanilla JavaScript
  • TSDX (GitHub)
    • Library-oriented preset for TypeScript
  • Neutrino (GitHub)
    • Zero-configuration presets for React, Preact, Vue, web and Node.js projects and libraries; lacks TypeScript support

React presets and frameworks

Toolchains

  • Rome (GitHub)
    • Rome is an experimental JavaScript toolchain from Facebook which includes a compiler, linter, formatter, bundler, testing framework and more

🚚 Bundlers

npm trends πŸ“ˆ

  • webpack (GitHub)
    • The most popular bundler with a wide ecosystem of plugins; used by popular tools like Create React App
  • Rollup (GitHub)
    • A bundler often used specifically for bundling libraries; requires plugins for TypeScript support (see TypeScript section below)
  • Parcel (GitHub)
    • A fast, zero-configuration bundler; builtin TypeScript support
  • FuseBox (GitHub)
    • Fast bundler with many features and builtin publishing and TypeScript support
  • microbundle (GitHub)
    • Fast, zero-configuration bundler that aims to reduce bundle size; supports TypeScript out of the box
  • Poi (GitHub)
    • Zero-config bundler based on webpack
  • browserify (GitHub)
    • The first JavaScript bundler around

Other

πŸ‘¨β€πŸ’» Compilers

Tools that allow "transcompiling" or "transpiling" JavaScript.

  • Babel (GitHub)
    • A tool to "downlevel compile" modern JavaScript to support older browsers; also used to add features like JSX to the language
    • @babel/preset-env
      • Tune Babel output for the minimum required level of browser support
  • swc (GitHub)
    • Very fast Babel alternative written in Rust
  • TypeScript (GitHub)
    • JavaScript with gradual typing; particularly useful for library authors and larger projects

🧫 Code generators

npm trends πŸ“ˆ

  • hygen (GitHub)
    • Ad-hoc generator or project scaffold tool
  • plop (GitHub)
    • Boilerplate micro-generator framework

πŸ’… Formatters and linters

npm trends πŸ“ˆ

  • ESLint (GitHub)
    • The defacto standard linter for JavaScript (and TypeScript since typescript-eslint)
    • eslint-config-airbnb (GitHub)
      • The most popular ruleset for ESLint; relatively conservative
    • Standard (GitHub)
      • A popular ruleset, although the "standard" name is more tongue in cheek
    • typescript-eslint (GitHub)
      • Replacement for the now-deprecated TSLint
    • eslint-config-es (GitHub)
      • ESLint configuration with a focus on strictness; supports TypeScript, React
  • Prettier (GitHub)
    • Opinionated formatter for JavaScript and TypeScript; useful for automatically enforcing consistent formatting and hence, for example, simplifying code reviews
    • prettier-eslint (GitHub)
      • Allows using Prettier as an ESLint plugin
    • eslint-config-prettier (GitHub)
      • Prevents ESLint conflicts with Prettier
    • pretty-quick (GitHub)
      • Skips running Prettier on unchanged files
  • XO (GitHub)
    • Opinionated (zero-config), configurable ESLint wrapper
    • vscode-linter-xo (GitHub)
      • XO doesn't integrate with ESLint tools, so it requires special support in editors
  • Zoe (GitHub)
    • Zero-config ESLint toolchain; includes Prettier and supports Jest and React
  • dprint (GitHub)
    • TypeScript, JavaScript, and JSONC formatter implemented in Rust; supports Prettier 2.0's ruleset

🐌 Runtimes

  • Node.js (GitHub)
    • The de facto standard runtime for JavaScript; includes the npm and npx tools
  • babel-node
    • Can execute or provide a REPL for, e.g., TypeScript
  • Deno (GitHub)
    • JavaScript and TypeScript runtime with an alternative module design
  • ts-node (GitHub)

Version managers

  • nvm (GitHub)
    • A commonly used version manager for Node.js
  • fnm (GitHub)
    • Fast Node Manager; built in native ReasonML
  • Volta (GitHub)
    • Fast, reliable and universal version manager for the whole Node.js toolchain; written in Rust

πŸƒ Testing

Tools for end-to-end, integration and unit testing.

Test libraries and frameworks

npm trends πŸ“ˆ

  • Mocha (GitHub)
    • Test framework
  • Jasmine (GitHub)
    • BDD testing framework
  • Chai (GitHub)
    • BDD or TDD assertion library for Node.js and browsers
  • Sinon (GitHub)
    • Test spies, stubs and mocks
  • testdouble.js (GitHub)
    • A minimal test double library for TDD
  • Doctest (GitHub)
    • Executable usage examples in comments for JavaScript and CoffeeScript

"Over the wire" test doubles

npm trends πŸ“ˆ

  • Nock (GitHub)
    • HTTP server mocking and expectations library for Node.js
  • SuperTest (GitHub)
  • Mountebank (GitHub)
    • Service virtualization tool with support for mock verification, stubbing with advanced predicates, JavaScript injection, and record-playback through proxying; supports HTTP, TCP and SMTP and can support custom protocols
  • Chai HTTP (GitHub)
    • HTTP integration testing addon for Chai

Test runners

npm trends πŸ“ˆ

  • Jest (GitHub)
    • Popular, well-polished test runner; supports TypeScript via @babel/preset-typescript and babel-jest; includes tools for spies, stubs, mocks and assertions
    • Majestic (GitHub)
      • GUI for Jest
    • jest-stare (GitHub)
      • Jest HTML reporter
  • Karma (GitHub)
    • Test runner for browsers
  • AVA (GitHub)
  • Wallaby (GitHub)
    • Non-free; integrates test output in the editor
  • Teston (GitHub)
    • Fast test runner similar to tape, but with ES6 module support and simpler subtest syntax

End-to-end testing focused frameworks

  • TestCafe (GitHub)
    • Automate end-to-end web testing
  • Cypress
    • End-to-end test runner
    • cypress-testing-library (GitHub)
      • Custom Cypress commands and utilities to avoid testing implementation details
  • Nightwatch (GitHub)
  • Puppeteer (GitHub)
    • Library for controlling headless Chrome or Chromium instances
  • Playwright (GitHub)
    • Node library to automate the Chromium, WebKit and Firefox browsers with a single API; made by Microsoft

React testing

πŸ‡ Performance

Benchmarking and profiling

Performance monitoring

React performance

πŸ“š Documentation generators

npm trends πŸ“ˆ

  • Docz (GitHub)
    • Creates live-reloading, seo-friendly, production-ready documentation sites with MDX; based on Gatsby
  • Docusaurus (GitHub)
    • A popular, full-featured documentation generator
  • docsify (GitHub)
    • Simple docs with an option to skip generating static files
  • TypeDoc (GitHub)
    • Generates API documentation from TypeScript
    • typedoc-plugin-markdown (GitHub)
      • Allows using the generated docs with Docusaurus
  • ESDoc (GitHub)
    • JavaScript API documentation generator

β˜‚οΈ Monorepos

Monorepo managers

npm trends πŸ“ˆ

  • Lerna (GitHub)
    • The most popular solution for managing monorepos
  • Rush (GitHub)
    • Part of the Rush stack by Microsoft
  • Yarn workspaces
    • Can be used alone or in conjunction with Lerna
  • Bolt (GitHub)
    • JavaScript project management based on Yarn
  • oao (GitHub)
    • Yarn-based, opinionated

Other

  • nx (GitHub)
    • Automated (zero-config), extensible dev tool setup for monorepos
  • syncpack (GitHub)
    • Manage multiple package.json files

πŸš€ Deployment and release tools

npm trends πŸ“ˆ

  • semantic-release (GitHub)
    • Automated version management and package publishing based on semver
  • Shipit (GitHub)
    • Automation engine and a deployment tool; alternative to Capistrano
  • release-it (GitHub)
    • Automated versioning and package publishing
  • Ship.js (GitHub)
  • Conventional Commits
    • A specification for adding human and machine readable meaning to commit messages
  • Standard Version (GitHub)
    • Like semantic-release but without the automatic publishing
  • gh-pages (GitHub)
    • Publish files to a gh-pages branch on GitHub (or any other branch)
    • Tutorial about using gh-pages with CRA
  • publish-please (GitHub)
    • Replacement for npm publish

🚩 TypeScript

  • GraphQL Code Generator (GitHub)
    • Generate TypeScript types from GraphQL schema; invaluable for large projects
    • graphql-let (GitHub)
  • tsd (GitHub)
    • Check TypeScript type definitions with assertions
    • A recent alternative is @ts-expect-error
  • AssemblyScript (GitHub)
    • Compile TypeScript to WASM
  • ts-jest (GitHub)
    • TypeScript preprocessor with sourcemap support for Jest
  • gts (GitHub)
    • Google TypeScript Style; zero-configuration formatting, linting and code fixing
  • tsc-watch (GitHub)
    • nodemon for TypeScript
  • Tsearch (GitHub)
    • Search functions in different packages by their type signature
  • dts-bundle-generator (GitHub)
    • Tool to generate a single bundle of dts

Documentation

  • TSDoc (GitHub)
    • A documentation comment standard
  • API Extractor (GitHub)
    • Analysis tool that can extract API reports for an API review workflow, bundle multiple declaration files into one, and extract a documentation model and generate an API reference website from it
  • See also: TypeDoc

Rollup plugins

npm trends πŸ“ˆ

Useful for generating library type definitions; can be replaced with tsc for applications.

  • @wessberg/rollup-plugin-ts (GitHub)
    • A more modern but slightly less mature alternative to rollup-plugin-typescript2
  • rollup-plugin-typescript2 (GitHub)

πŸ“¦ Package management

Package managers

npm trends πŸ“ˆ

Package search, vetting

Git hook managers

npm trends πŸ“ˆ

Desktop packaging

Executables

Other

  • patch-package (GitHub)
    • Fix issues with packages without having to fork them or waiting
  • npm-package-scripts (nps) (GitHub)
    • A specialized tool for having complex npm scripts
  • bundlesize (GitHub)
    • Set configurable bundle size limits
  • Size Limit (GitHub)
    • Performance budget tool
  • Depcheck (GitHub)
    • Check npm packages for unused dependencies
  • why-npm-i-so-long (GitHub)
  • Package Phobia (GitHub)
  • nrm (GitHub)
    • npm registry manager; fast switch between different registries
  • Open-Registry
    • Community-funded mirror of the npm registry
  • Dependency cruiser (GitHub)
    • Validate and visualize dependencies

πŸ’‘ Create React App

npm trends πŸ“ˆ

Create React App purposely limits its configurability to be able to give developer guarantees, but there are advanced use cases that require configuration while still avoiding "ejecting" from Create React App.

🎨 Design systems and prototyping

npm trends πŸ“ˆ

Tools for developing and testing components and for creating style guides and reusable collections of components.

❌ Cross-platform

  • cross-env (GitHub)
    • Set and use environment variables across platforms
  • shx (GitHub)
    • Unix-like shell commands

πŸ—Ώ GraphQL

  • eslint-plugin-graphql (GitHub)
    • ESLint plugin to validate GraphQL query strings against a schema

βœ” Static type checkers

🚧 Unvetted or uncategorized

TypeScript

  • node-typescript-boilerplate (GitHub)
  • ttypescript (GitHub)
    • Wraps tsc to enable transforming the compiled code
  • TypeScript Node Starter (GitHub)
    • Microsoft's end-to-end project setup for Node.js using TypeScript

webpack plugins

React

Package management

  • reg (GitHub)
    • Experimental package manager for native ES modules
  • Yarn deduplicate (GitHub)
    • Deduplication tool for yarn.lock files

GraphQL

React

  • jest-react-profiler (GitHub)
    • Jest helpers for working with the React Profiler API

Linting

WebExtensions

  • web-extension-starter (GitHub)
  • Chrome Extension CLI (GitHub)
  • Chrome Extension Boilerplate (GitHub)
  • Web Store Upload CLI (GitHub)

Extension testing

Other

πŸ’€ Legacy or not recommended tools

Listed separately to avoid confusion.

πŸ™ˆ See also

Outdated resources

More Repositories

1

concurrency-glossary

πŸ¦‘ Informal definitions of terms used in concurrency modeling
HTML
314
star
2

js-equality-game

The Worst Minesweeper πŸ’£ Ever
JavaScript
281
star
3

tuplerone

Tuples and value objects for JavaScript 🀷
TypeScript
54
star
4

promiseproxy

Promisify callback-style APIs with ES2015 Proxy 🐳
JavaScript
46
star
5

queueable

Convert streams to async βŒ› iterables ➰
TypeScript
46
star
6

gh-minimap

Source code πŸ’» minimap πŸ—ΊοΈ extension for GitHub πŸ™ˆ
JavaScript
10
star
7

sensfinder

Tool to help finding the best sensitivity for CS
CSS
9
star
8

vardadienas

Vārda dienu kalendāra dati πŸ‡±πŸ‡»
TypeScript
8
star
9

wtmap

Chrome extension that adds plane icons and centering on player to the War Thunder browser tactical map
JavaScript
8
star
10

circulator

Simple, generator-based circular iterator 🐍
TypeScript
7
star
11

react-matter-js

🌠 React adapter for the Matter.js physics engine
TypeScript
7
star
12

latvian-grammar

Latvian grammar library
JavaScript
7
star
13

symbola

Cooking with symbols 🍳
TypeScript
7
star
14

deepproxy

Recursive ES2015 Proxy
TypeScript
5
star
15

repython

Python
5
star
16

nelabs.dev

JavaScript
3
star
17

fetchpoeitems

JavaScript
3
star
18

mangoext

🐰 A revolution in mango technology
JavaScript
3
star
19

react-default-memo

πŸ“ Proof of concept for deeply memoizing React components by default
JavaScript
3
star
20

promiseproxy-node

ES2015 Proxy based wrapper for promisifying Node.js 6 API
JavaScript
3
star
21

promiseproxy-chrome

Lightweight Proxy-based promisified Chrome API wrapper
JavaScript
3
star
22

factorio-data

Factorio prototype data in JSON format
JavaScript
2
star
23

rpftool

Automatically exported from code.google.com/p/rpftool
C#
2
star
24

batoto-scraper

PHP
2
star
25

vds

Vārdadienas
JavaScript
2
star
26

rxjs-rollup-example

The operators don't get bundled
JavaScript
2
star
27

emojitorio

Lua
1
star
28

dotacharts

Simple charts from Dota 2 match replays
Python
1
star
29

pargimeni

HTML
1
star
30

smoosh-db

TypeScript
1
star
31

ciba

TypeScript
1
star
32

dotjs

JavaScript
1
star
33

code-examples

Poor Quality Code Examples
JavaScript
1
star
34

soundboard

Soundboard app implemented with NodeGui
TypeScript
1
star
35

yarn-plugins

1
star
36

_slikts.github.com

anti-annoyances
1
star
37

ddnsupdate

Python
1
star
38

lib-bones

TypeScript
1
star
39

sri-extract-repro

JavaScript
1
star
40

no-jquery

HTML
1
star
41

esnext-generic-iteration

Generic iteration methods for ES.next
JavaScript
1
star
42

unreaddit

A Chrome extension to highlight unread reddit comments.
JavaScript
1
star