Easy and quick install, supports colors and icons in the terminal, has several easy and useful table libraries to choose from, and it runs plenty fast enough for it's use case.
What benefits would rust, golang, haskell, or whatever you like provide over node in this situation?
Actually, you can write cli tools with js, it's just that in most cases it is not a good choice. There are some reasonable cli tools which can be written in js e.g. js dev-tools like rollup, gulp, grunt, etc. But I would not consider Coinmon a js dev-tool ;-)
When you say 'Easy and quick install' thats not completely true. First of all it assumes that you have a js package manager installed already (npm/yarn), which is not preinstalled on most OS. So yes, nowadays thats not too much of a hassle. But from a package manager perspective npm itself is a disease as it does not integrate with the system package manager so your system is not completely up to date after you told your package manager to update all package. Instead you have to start npm to let it run its own updates. Sometimes even that is not as simple as it could be because frontend-devs tend to advise to install npm packages locally (within a project) instead of globally (once per system).
I think we could continue this discussion for a while as there are many more arguments to be evaluated (not everything about npm is bad), but ultimately we will find out, that other languages would be a better fit for such tools.
Again, my initial commment was meant as 'advice' and not as 'hate'. Yes I know, nobody asked for advice ;-)
https://www.npmjs.com/package/pkg
edit: For the curious -- Just tried on a really simple script that just takes one argument and writes it with some text to STDOUT and it still came to 35MB. So it must package a bunch of Node with it. I won't be leaving my go-to's for it anytime soon unless usability and development speed necessitate it. Going to have to go with the, best to not use NodeJS for general cmd-line utils outside of the NodeJS environment. The one perk is that it will, by default, output executables for Linux, macOS, and Windows.
Source:
(function() {
'use strict';
function main(_string) {
console.log(`${_string} was read from STDIN.`);
}
main(process.argv[2]);
}());
Output file: 35088858 Nov 20 11:36 index-linux
35717043 Nov 20 11:36 index-macos
23137020 Nov 20 11:36 index-win.exeI'm using it myself and besides the fat binaries and the fact that you have to write Javascript, it is really good. (Working on replacing this daemon with Go ASAP)
Edit: just read your last line, I'm kinda stating the obvious here.
And of course you should write cli tools with whatever you feel comfortable.
If you want them to be well-received by everyone, well that's a different topic.
That's not the hacker mentality, you can write a cli tool with JavaScript, Python, Lua, etc., make it work and there's nothing wrong with it. If you want to go full deep into cli tooling, then you start to looking into other languages that can fit into your new requirements.
Which language (rust, golang, haskell) do you think it is more fitting? I am new to writing things running on command line @@
Hey guys, please use rust, golang, haskell or whatever you like, but please do not use nodejs to write CLI tools.
And I am not one of the guys who is against JS in general. In fact, I like building PWAs and other JS heavy apps/websites a lot. But there are so many tools do a better job at building cli programs.