proto v0.39 - Mid-year quality of life improvements
This is a small release that includes many quality of life improvements.
Improved proto activate
performance
In v0.38 we released the proto activate
command
as a means of bootstrapping your shell with necessary paths and variables. Since then, we've fixed a
handful of bugs and focused on performance for this release.
In this release, we've reduced the time it took to execute activation from 200-300ms down to 10-20ms. We've also fixed some syntax issues around Bash and Zsh shells.
Merged proto install
and proto use
commands
When proto was first built we had separate commands for installing all tools
(proto use
), and installing a single tool
(proto install
). For historical reasons, this was loosely based
off of nvm, but we have diverged heavily since then.
Going forward, the proto use
command is now deprecated, and all of its functionality has been
merged into proto install
. To install all tools, simply don't pass arguments to the command!
# Install all tools
$ proto install
# Install a single tool
$ proto install node
We like this change, as it aligns with package/dependency manager based workflows.
Customize built-in tools
proto ships with a handful of official built-in plugins for popular
tools like Node.js, Go, and more. While this is great as it reduces configuration boilerplate, it
may cause an inconvenience for adoption or migration related reasons. To support these workflows,
we're introducing a new setting, settings.builtin-plugins
,
that can be used to disable all built-in plugins, or only allow a few select plugins.
[settings]
# Disable all
builtin-plugins = false
# Enable some
builtin-plugins = ["node", "bun"]
Pin proto itself
proto has yet to reach an official v1 release, as we're constantly fine-tuning and reworking APIs.
Because of this, we may accidentally introduce unexpected changes, or introduce breaking changes
that you were relying on. To help mitigate these issues, you can now
pin the version of proto itself in .prototools
.
proto = "0.39.0"
When this pin exists, all proto shims will attempt to execute proto using that exact version. This
allows for the global proto
binary to differ in version from what is executed.
Other changes
View the official release for a full list of changes.
- Added
PROTO_NO_MODIFY_PROFILE
andPROTO_NO_MODIFY_PATH
environment variables toproto setup
(for automated workflows). - Updated
proto status
to display and include versions from ecosystem files (.nvmrc
, etc). - Updated
github://
plugin locators to support monorepos. Append the project name (that tags are prefixed with) to the path:github://moonrepo/tools/node_tool