Skip to main content

proto v0.3 - Improved npm, go, and version requirement support

· 2 min read
Miles Johnson
Founder, developer

With this release, we're improving some workflows and version detection logic based on initial feedback.

Bundled npm support

After Node.js is installed, the version of npm that came bundled with that Node.js version will also be installed into proto. This functionality can be skipped by passing --no-bundled-npm during installation.

$ proto install node -- --no-bundled-npm

To further expand upon this, bundled is now considered a built-in alias, and will be used during version detection. When encountered, we'll first detect the version of Node.js running, and infer the npm version from there.

$ proto global npm bundled

Only supported by proto, not moon.

Automatic GOBIN setup

After Go is installed, we'll now inject a GOBIN environment variable into your shell, pointing to ~/go/bin, if it doesn't already exist. This variable will be used to locate Go binaries across all installed versions, and help to avoid binary not found errors.

This functionality can be skipped by passing --no-gobin during installation.

$ proto install go -- --no-gobin

Only supported by proto, not moon.

Better version requirement detection

Previously when proto encounted a version requirement (^, ~, >=, etc) during version detection, we would attempt to resolve a version that satisfied the requirement based on versions available in the remote manifest (what's been officially released). While this worked, it would result in far too many local installs as that satisfied version constantly changed.

Instead, we now satisfy the version requirement based on versions that have been installed locally to ~/.proto/tools. If no version matches, detection will simply move on to the next case, and eventually fallback to the global default version.