Show HN: Fnm – Fast and simple Node.js version manager built in ReasonML
github.com
github.com
Think of it like a Swiss Army knife of version managers that can handle all the languages you use, per-project. And it's all just bash scripts, and installs everything into a visible place on your drive.
If you have any suggestions on what the readme should say feel free to open an issue or a small PR.
It does support `.nvmrc` files so my use cases have been fulfilled with fnm - but if yours wasn't implemented yet - you are more than welcome to open an issue and we'll try to tackle it.
Also, fnm is a single executable, therefore it is very easy to install and works across all shells (no need for wrappers in `fish` shells, for instance). Just put it in your path and you're good to go!
The gif on the README is real time (it's a screen recording) - so installations are fast, and every command that works locally is extremely fast.
So, tl;dr, fnm is built with performance in mind
export PATH=~/.nvm/versions/node/v11.6.0/bin:$PATH
Downside is that you have to bump the version occasionally but it's worth the fast shell startup.edit: also just read the v2 roadmap that is on the top of HN now - lots of great new features coming up which only reinforces our decision to stick with yarn
Is that the courtesy of https://github.com/jordwalke/pesy ?
For some time I wanted to try ReasonML for server-side development, but for some reason I assumed, that most of the ecosystem would be node.js based.
There exists a fast http server in native OCaml:
pesy is just a utility I made to help people create new native Reason projects (like fnm) quickly and easily. It's fun.
fnm is a native Reason app. We haven't advertised much of Reason's (OCaml's) native capabilities because we wanted to make sure we've built out a lot of the tooling that makes native development easy - for example https://esy.sh. Now that a lot of this native tooling is becoming polished, I hope you'll probably start seeing more projects like fnm.
I looked at Reason several months ago and my impression was, that if you want to do frontend stuff with bucklescript, you are one git-pull and npm install from a working scaffold, but if you want Reason with ocaml for native stuff, you would mostly be scaffolding yourself.
I am really glad I was mistaken :)
What particular problems or projects do you have where this is a pressing necessity?
I just install latest LTS and keep that up to date, and I've yet to find a single thing not working.
If devs want something different from the distro provided libs we typically ask that they use containers or otherwise vendor them.
Ideally we would like our software to depend on the system for the bare minimum and security critical libs like OpenSSL so that Ops is free to switch out the underlying platform with minimal friction.
https://github.com/nodesource/distributions/blob/master/READ...
https://stackoverflow.com/questions/14742553/how-to-set-cust...
You maintain a library and you support more than just the latest version of Node. You switch to test compatibility.
You work on a project with a team. Some members of the team work on other projects with other versions of Node. They need to be able to switch.
Issues which made it unusable completely every time I tried to use node it could no longer find the node/npm binaries.
The only option other than reading the code I have now is screen-capturing the last frame of the gif an looking at what commands were used. Really?
edit: yep, see here: https://github.com/Schniz/fnm/blob/8cb998759ef969685d711eb42...