Awesome
<p style="" align="center"> <img src="./logo.png" alt="Logo" width="250" height="250"> </p>vfox
If you switch between development projects which expect different environments, specifically different runtime versions or ambient libraries,
or you are tired of all kinds of cumbersome environment configurations, vfox
is the ideal choice for you.
Introduction
vfox
is a cross-platform version manager(similar to nvm
, fvm
, sdkman
, asdf-vm
, etc.), extendable via plugins. It allows you to quickly install
and switch between different environment you need via the command line.
Why use vfox?
- cross-platform support (Windows, Linux, macOS)
- consistent commands to manage all your languages
- supports different versions for different projects, different shells, and globally.
- simple plugin system to add support for your runtime of choice
- automatically switches runtime versions as you traverse your project
- support for existing config files
.node-version
,.nvmrc
,.sdkmanrc
for easy migration - shell completion available for common shells (Bash, ZSH, Powershell, Clink)
- it's faster than
asdf-vm
, and offers more simple commands and genuine cross-platform unification. see Comparison with asdf
Demo
Quickstart
For detailed installation instructions, see Quick Start
1. Choose an installation that works for you.
2. ⚠️ Hook vfox
into your shell (pick one that works for your shell) ⚠️
echo 'eval "$(vfox activate bash)"' >> ~/.bashrc
echo 'eval "$(vfox activate zsh)"' >> ~/.zshrc
echo 'vfox activate fish | source' >> ~/.config/fish/config.fish
# For PowerShell:
if (-not (Test-Path -Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }; Add-Content -Path $PROFILE -Value 'Invoke-Expression "$(vfox activate pwsh)"'
# For Clink:
# 1. Install clink: https://github.com/chrisant996/clink/releases
# Or Install cmder: https://github.com/cmderdev/cmder/releases
# 2. Find script path: clink info | findstr scripts
# 3. copy internal/shell/clink_vfox.lua to script path
Remember to restart your shell to apply the changes.
3. Add an SDK plugin
$ vfox add nodejs
4. Install a runtime
$ vfox install nodejs@21.5.0
5. Switch runtime
$ vfox use nodejs@21.5.0
$ node -v
21.5.0
Full Documentation
See vfox.lhan.me for full documentation.
Roadmap
Our future plans and high priority features and enhancements are:
- Refactoring the plugin mechanism:
- Introducing plugin templates to facilitate multi-file plugin development.
- Establishing a global registry (similar to
NPM Registry
orScoop Main Bucket
) to provide a unified entry point for plugin distribution. - Decomposing the existing plugin repository into individual repositories, one for each plugin.
- Allowing the switching of registry addresses.
- Plugin capabilities: Parsing legacy configuration files, such as
.nvmrc
,.node-version
,.sdkmanrc
, etc. - Plugin capabilities: Allowing plugins to load installed runtimes and provide information about the runtime.
Available Plugins
If you have installed
vfox
, you can view all available plugins with thevfox available
command.
For more details, see the Available Plugins.
Contributors
<a href="https://github.com/version-fox/vfox/graphs/contributors"> <img src="https://contrib.rocks/image?repo=version-fox/vfox" /> </a>Thanks to following people who contributed to this project. 🎉🎉🙏🙏
Contributing
Bug reports, contributions and forks are welcome. All bugs or other forms of discussion happen on issues.
See more at CONTRIBUTING.md.
Plugin Contributions, please go to Public Registry
Star History
Thanks
<a href="https://www.jetbrains.com/?from=gev" target="_blank"> <img src="https://i.loli.net/2021/02/08/2aejB8rwNmQR7FG.png" width="200" height="200" /> </a>Thanks JetBrains for the free open source license. :)
<a href="https://hellogithub.com/repository/a32a1f2ad04a4b8aa4dd3e1b76c880b2" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=a32a1f2ad04a4b8aa4dd3e1b76c880b2&claim_uid=TV6tBSMzmZUWQqk" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
COPYRIGHT
Apache 2.0 license - Copyright (C) 2024 Han Li and contributors