V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuhangch
V2EX  ›  程序员

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

  •  
  •   yuhangch ·
    yuhangch · 135 天前 · 1917 次点击
    这是一个创建于 135 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  134 天前
    感谢各位🙏的建议,最后是用 deno 做的,再次感谢一楼

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

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

    https://deno.land/manual/tools/compiler#compiling-executables
    li02
        17
    li02  
       134 天前 via Android
    就你这需求,写 js 在控制台运营就可以了啊,哪用这么复杂
    yuhangch
        18
    yuhangch  
    OP
       134 天前
    @li02 现在想想是搞复杂了,本来以为自己要处理文本,后来发现有接口能用🙃️,想在终端用,后续发布也方便些
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4241 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.