|
|
6 years ago | |
|---|---|---|
| .ci | 6 years ago | |
| docs | 6 years ago | |
| esy.lock | 7 years ago | |
| executable | 6 years ago | |
| feature_tests | 6 years ago | |
| library | 6 years ago | |
| test | 7 years ago | |
| windows.esy.lock | 7 years ago | |
| .dockerignore | 7 years ago | |
| .gitignore | 7 years ago | |
| CHANGELOG.md | 6 years ago | |
| Dockerfile | 7 years ago | |
| LICENSE | 7 years ago | |
| README.md | 6 years ago | |
| azure-pipelines.yml | 7 years ago | |
| dune | 7 years ago | |
| dune-project | 7 years ago | |
| fnm.opam | 7 years ago | |
| package.json | 6 years ago | |
| windows.json | 7 years ago | |
README.md
Fast Node Manager (fnm)
🚀 Fast and simple Node.js version manager, built in native ReasonML
Features
✨ Single file, easy installation, instant startup
🚀 Built with speed in mind
🤔 Works with .nvmrc and .node-version files
Installation
Using Homebrew (OSX)
brew install Schniz/tap/fnm
This is a custom tap I'm maintaining, and will be used until fnm will move to the official one.
Using a script
For bash, zsh and fish shells, there's an automatic installation script:
curl -fsSL https://github.com/Schniz/fnm/raw/master/.ci/install.sh | bash
Parameters
--install-dir
Set a custom directory for fnm to be installed. The default is $HOME/.fnm.
--skip-shell
Skip appending shell specific loader to shell config file, based on the current user shell, defined in $SHELL. e.g. for Bash, $HOME/.bashrc. $HOME/.zshrc for Zsh. For Fish - $HOME/.config/fish/config.fish
Example:
curl -fsSL https://github.com/Schniz/fnm/raw/master/.ci/install.sh | bash -s -- --install-dir "./.fnm" --skip-shell
Manually
-
Download the latest release binary for your system
-
Make it available globally on
$PATH -
Add the following line to your
.bashrc/.zshrcfile:eval "`fnm env --multi`"If you are using fish shell, add this line to your
config.fishfile:fnm env --multi | source
Usage
You can always use fnm --help to read the docs:
fnm install [VERSION]
Installs [VERSION]. If no version provided, it will install the version specified in the .nvmrc file located in the current working directory.
fnm use [VERSION]
Activates [VERSION] as the current Node version. If no version provided, it will activate the version specified in the .nvmrc or .node-version file located in the current working directory.
fnm ls
Lists the installed Node versions.
fnm ls-remote
Lists the Node versions available to download remotely.
fnm alias [VERSION] [NAME]
Aliases a Node version to a given name.
fnm default [VERSION]
Aliases a Node version as default. Uses fnm alias underneath.
fnm env [--multi] [--shell=fish|bash|zsh] [--node-dist-mirror=URI] [--use-on-cd] [--base-dir=DIR] [--log-level=quiet|error|all]
Prints the required shell commands in order to configure your shell, Bash compliant by default.
- Providing
--multiwill output the multishell support, allowing a different current Node version per shell - Providing
--shell=fishwill output the Fish-compliant version. Omitting it andfnmwill try to infer the current shell based on the process tree - Providing
--node-dist-mirror="https://npm.taobao.org/dist"will use the Chinese mirror of Node.js - Providing
--use-on-cdwill also output a script that will automatically change the node version if a.nvmrc/.node-versionfile is found - Providing
--base-dir="/tmp/fnm"will install and use versions in/tmp/fnmdirectory
Future Plans
- Feature:
fnm use --install - Feature:
fnm install lts? - Windows Support?
- Linux: Replace
tarwith a statically linked library too (for ungzip + untar)
Contributing
PRs welcome 🎉
Developing:
npm install -g esy
git clone https://github.com/Schniz/fnm.git
cd fnm/
esy install
esy bootstrap
esy build
Running Binary:
After building the project, you can run the main binary that is produced.
esy x fnm.exe
Running Tests:
# Runs some smoke-unity test
esy test
# Runs the feature tests
feature_tests/run.sh