2022 用 node 写个命令行工具的最佳实践?

2022-01-07 11:39:49 +08:00
 yuhangch

很简单的功能,之前可能会用 go 写。。现在完全不想碰了🐶

1 . 打包后体积尽量小点,最好能是个单个可执行文件,外挂个配置文件

2 . 跨平台简单点( win / mac )

2791 次点击
所在节点    程序员
18 条回复
lisongeee
2022-01-07 11:45:20 +08:00
你可以用 deno ,不用打包,不用手动下载
使用的时候直接 deno https://cli.url -a -c -c
shuimugan
2022-01-07 11:48:39 +08:00
lscho
2022-01-07 12:17:05 +08:00
你这需求不用 go 那不是找麻烦。。。node 想打包的话,体积不会小
SorcererXW
2022-01-07 12:46:15 +08:00
可以用 esbuild 编译成单 js 文件
wsseo
2022-01-07 12:57:08 +08:00
用 rust 更合适
timpaik
2022-01-07 13:01:59 +08:00
node 单文件体积可能还不如 go 写,你这种需求还是看看 rust 吧
lululau
2022-01-07 13:27:08 +08:00
CokeMine
2022-01-07 14:42:21 +08:00
要可执行文件应该是要把运行时也打进去了,见 2 楼。这体积肯定不会小的…
weixiangzhe
2022-01-07 17:30:38 +08:00
带 node_module 就小不了
hutoer
2022-01-07 17:37:03 +08:00
一定要 js ?可以试试.net core
star7th
2022-01-07 17:55:18 +08:00
这个事情我也探索过。暂时还是觉得 go 是最好的选择。用 node 的话,体积小不了。我也不知道其他人有没有更好的方案
shuimugan
2022-01-07 18:20:47 +08:00
这种东西要自己动手测试过,有数据对比才知道取舍。

nest.js 示例项目打包后 18MB ,gin 实例代码打包后 4.6MB ,测试结果如下:

用 nest new project-name 创建一个模板应用并安装依赖,再使用 pgk 打包成单文件
pkg --compress Brotli -o test-bin dist/main.js

41MB ,tar -czvf 后 18MB

用 gin 的示例代码编译后 8.7MB ,tar -czvf 后 4.6MB

node 和 go 的差距就在这里了,18MB VS 4.6MB ,看你能不能接受


本来写了一大段包括命令的,结果 v 站的 cf 防护开了,当成有恶意代码被阻拦了……
mritd
2022-01-07 18:26:45 +08:00
我觉得你在嘲讽 nodejs 🤣 你说的这个需求 go 完全压制 node
xiaojun1994
2022-01-07 18:35:27 +08:00
是我理解错了吗,我理解的是你想用写一个命令?比如:cp 、ls 这种可以
xiaojun1994
2022-01-07 18:35:58 +08:00
@xiaojun1994 是我理解错了
shangyes
2022-01-08 03:40:47 +08:00
deno compile

https://deno.land/manual/tools/compiler#compiling-executables
li02
2022-01-08 15:41:48 +08:00
就你这需求,写 js 在控制台运营就可以了啊,哪用这么复杂
yuhangch
2022-01-08 16:07:03 +08:00
@li02 现在想想是搞复杂了,本来以为自己要处理文本,后来发现有接口能用🙃️,想在终端用,后续发布也方便些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX