• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yuhangch
2.53D
V2EX  ›  程序员

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

  •  
  •   yuhangch ·
    yuhangch · Jan 7, 2022 · 4269 views
    This topic created in 1770 days ago, the information mentioned may be changed or developed.

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

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

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

    Supplement 1  ·  Jan 8, 2022
    感谢各位🙏的建议,最后是用 deno 做的,再次感谢一楼

    暂时完工,是个从 notion 导出 markdown ,再转成 hugo post 格式的小工具
    估计很少有人有这个需求🙃️ ,👉 https://github.com/yuhangch/hution
    18 replies  •  2022-01-08 16:07:03 +08:00
    lisongeee
    lisongeee
    Jan 7, 2022❤️1
    1
    你可以用 deno ,不用打包,不用手动下载
    使用的时候直接 deno https://cli.url -a -c -c
    slowgen
    slowgen
    PRO
    Jan 7, 2022❤️1
    2
    lscho
    lscho
    Jan 7, 2022
    3
    你这需求不用 go 那不是找麻烦。。。node 想打包的话,体积不会小
    SorcererXW
    SorcererXW
    Jan 7, 2022
    4
    可以用 esbuild 编译成单 js 文件
    wsseo
    wsseo
    Jan 7, 2022
    5
    用 rust 更合适
    timpaik
    timpaik
    Jan 7, 2022 via Android
    6
    node 单文件体积可能还不如 go 写,你这种需求还是看看 rust 吧
    CokeMine
    CokeMine
    Jan 7, 2022 via iPad
    8
    要可执行文件应该是要把运行时也打进去了,见 2 楼。这体积肯定不会小的…
    weixiangzhe
    weixiangzhe
    Jan 7, 2022
    9
    带 node_module 就小不了
    hutoer
    hutoer
    Jan 7, 2022
    10
    一定要 js ?可以试试.net core
    star7th
    star7th
    Jan 7, 2022
    11
    这个事情我也探索过。暂时还是觉得 go 是最好的选择。用 node 的话,体积小不了。我也不知道其他人有没有更好的方案
    slowgen
    slowgen
    PRO
    Jan 7, 2022
    12
    这种东西要自己动手测试过,有数据对比才知道取舍。

    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
    mritd
    Jan 7, 2022 via iPhone
    13
    我觉得你在嘲讽 nodejs 🤣 你说的这个需求 go 完全压制 node
    xiaojun1994
    xiaojun1994
    Jan 7, 2022
    14
    是我理解错了吗,我理解的是你想用写一个命令?比如:cp 、ls 这种可以
    xiaojun1994
    xiaojun1994
    Jan 7, 2022
    15
    @xiaojun1994 是我理解错了
    shangyes
    shangyes
    Jan 8, 2022
    16
    deno compile

    https://deno.land/manual/tools/compiler#compiling-executables
    li02
    li02
    Jan 8, 2022 via Android
    17
    就你这需求,写 js 在控制台运营就可以了啊,哪用这么复杂
    yuhangch
    yuhangch
    OP
    Jan 8, 2022
    18
    @li02 现在想想是搞复杂了,本来以为自己要处理文本,后来发现有接口能用🙃️,想在终端用,后续发布也方便些
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1570 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 16:30 · PVG 00:30 · LAX 08:30 · JFK 11:30
    ♥ Do have faith in what you're doing.