Skip to content

A cross-platform and extendable version manager with support for Java, Node.js, Flutter, .Net & more

License

Notifications You must be signed in to change notification settings

version-fox/vfox

Repository files navigation

Logo

vfox

Go Report Card GitHub License GitHub Release Discord

[English] [中文文档]

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)
  • single CLI for multiple languages
  • consistent commands to manage all your languages
  • support GlobalProjectSession scopes when switching versions
  • simple plugin system to add support for your language of choice
  • automatically switches runtime versions as you traverse your project
  • shell completion available for common shells (Bash, ZSH, Powershell)
  • it's faster than asdf-vm, and offers more simple commands and genuine cross-platform unification. see Comparison with asdf

Demo

asciicast

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:
# 1. Open PowerShell Profile:
New-Item -Type File -Path $PROFILE # Just ignore the 'file already exists' error.
Invoke-Item $PROFILE
# 2. Add the following line to the end of your $PROFILE and save:
Invoke-Expression "$(vfox activate pwsh)"

Remember to restart your shell to apply the changes.

3. Add an SDK plugin

$ vfox add nodejs

4. Install a runtime

$ vfox install [email protected]

5. Switch runtime

$ vfox use [email protected]
$ 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 or Scoop 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.

Supported Plugins

If you have installed vfox, you can view all available plugins with the vfox available command.

plugins

For more details, see the version-fox-plugins

Contributors

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 version-fox-plugins.

Star History

Star History Chart

Thanks

Featured|HelloGitHub

COPYRIGHT

Apache 2.0 license - Copyright (C) 2024 Han Li and contributors