Welcome to Volta!

Volta is a hassle-free way to manage your JavaScript command-line tools.


Why Volta?

Volta’s job is to get out of your way.

With Volta, you can select a Node engine once and then stop worrying about it. You can switch between projects and stop having to manually switch between Nodes. You can install npm package binaries in your toolchain without having to periodically reinstall them or figure out why they’ve stopped working.

Quickly set up and switch Node engines

Fetch and use a particular version of Node:

volta install node@20

You should notice right away how responsive the tool is. Your development time is precious! JavaScript developers deserve snappy tools. 🙂

Reproducible environments for collaborators

Volta lets you choose your Node engine and package manager for a project once with one command:

volta pin node@18

Volta saves the exact version of the Node engine in your package.json so you can commit your selection to git. From that point on, every time you run Node inside your project directory, Volta automatically switches to that same version of Node you chose. Similarly, all your collaborators can do the same by installing Volta on their development machine.

Install and forget

Volta also lets you install your favorite package binaries as command-line tools, without worrying about them interfering with your development projects. Even better, these tools get pinned to a particular Node engine at installation time and don’t change unless you explicitly tell them to. This means that once a tool works, it keeps working.

npm install -g surge
surge -h

How does it work?

Volta does not use any fancy OS features or shell-specific hooks. It’s built on the simple, proven approach of shims.

Whenever you install a tool with Volta, it adds a shim to your PATH that acts as an intelligent (and fast) router to the right version of the tool and runs it with the right Node engine.

Volta is easy to install, with no external dependencies, because it’s built in Rust as a single, fast native executable.