Supported tools
The following tools are supported in proto's toolchain. Additional tools can be supported through plugins.
Bun
Bun (bun
) is an all-in-one runtime and toolset for JavaScript and TypeScript,
powered by Zig and Webkit.
Global binaries
- Installs to
~/.bun/bin
.
Deno
Deno (deno
) is a secure runtime for JavaScript and TypeScript, powered by
Rust and Chrome's V8 engine.
Global binaries
- Installs to
DENO_INSTALL_ROOT
or~/.deno/bin
.
Detection sources
- A
.dvmrc
file.
Go
Go (go
) is a simple, secure, and fast systems language.
Post-install hook
After installation, we'll inject a GOBIN
environment variable into your shell, pointing to
~/go/bin
, if it does not already exist. This variable will be used to locate Go binaries across
all installed versions. This functionality can be skipped by passing --no-gobin
during
installation.
$ proto install go -- --no-gobin
Global binaries
- Installs to
GOBIN
or~/go/bin
.
Detection sources
Node.js
Node.js (node
) is a JavaScript runtime built on Chrome's V8 engine.
Post-install hook
After installation, the version of npm that came bundled with Node.js will also be installed. This
functionality can be skipped by passing --no-bundled-npm
during installation.
$ proto install node -- --no-bundled-npm
Global binaries
- Installs to
~/.proto/tools/node/globals/bin
.
Detection sources
- An
.nvmrc
or.node-version
file. - The
engines
field inpackage.json
.
When parsing engines, explicit versions (1.2.3
, =1.2.3
) will be used as-is, but
requirements/ranges (^1.2.3
, >=1.2.3
) will scan ~/.proto/tools/node
for an applicable match.
npm, pnpm, yarn
proto supports all popular Node.js package managers: npm
, pnpm
, yarn
.
Global binaries
- Installs to
~/.proto/tools/node/globals/bin
. - Internally all package managers install globals with
npm
into the location above.
Detection sources
- The
packageManager
field inpackage.json
. - The
engines
field inpackage.json
(same notice above applies).
node-gyp
The node-gyp
binary is created alongside the npm
tool, and cannot be installed manually.
corepack
Corepack is not supported by proto, and will never be. Use proto use
instead,
which is a far more poweful alternative.
Rust
Rust (rust
) is blazingly fast and memory-efficient systems language.
If you're familiar with Rust, you most likely use rustup, a Rust specific
toolchain manager. This overlaps heavily with how proto works, so instead of proto reinventing the
wheel here, we simply call rustup
under the hood. Because of this, be aware of the following when
using Rust in proto:
- Rust and Cargo must be pre-installed on your system.
- The
~/.cargo/bin
directory must be in yourPATH
. - We don't install Rust to
~/.proto/tools/rust
but instead reference~/.rustup/toolchains
. - We don't create shims for
cargo
,rustup
, etc.
Global binaries
- Installs to
CARGO_INSTALL_ROOT
or~/.cargo/bin
.
Detection sources
Since we don't create shims for cargo
, rustup
, etc, we can't detect Rust versions at runtime.
However, rustup
supports this as well through the
rust-toolchain.toml
file.
We suggest using this file.
[toolchain]
profile = "default"
channel = "1.68.0"