V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
WittBulter
V2EX  ›  分享创造

一个有意思的命令行框架 `func`

  •  
  •   WittBulter · 2019-06-14 21:15:52 +08:00 · 2944 次点击
    这是一个创建于 2023 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    这是一个用于 NodeJS 的命令行框架,和 commander, args 所做的是同一件事,但有一些区别。

    • 更具有可读性的代码
    • 更容易抽象
    • 有配套脚手架,可一键开发命令行工具,打包等
    • 框架 gzip 之后约 4k,高性能

    细节

    我经常需要用 NodeJS 写一些命令行框架,每次都需要配置 tsconfig / lint / bin / bundle 等等,而且对于命令和参数也需要逐一判断,最后还需要自己抽象,这浪费了非常多的时间。然后我想能不能自己做一个更益于抽象和设计的命令行框架呢?于是就有了 func

    func 算是一个类 Ioc 框架,但由于本身出色的设计和对于开发者体验的追求,它保持了很高的开发体验同时也保证了包的大小与依赖,同时有相应的脚手架支撑,这可能是目前 NodeJS 开发命令行工具最优解决方案。

    项目的地址: func

    快速体验 npx cfunc init (cfuncfunc 的脚手架,但也是用其构建的,大家可以感受一下包的质量和速度,还有项目的易扩展性。)

    其他

    1. 这个项目已经投入了生产
    2. 对于我个人,我会把所有的项目都迁往 func,它真的很好用
    3. 项目不会堆砌 feature,因为它重视的是 开发者体验
    第 1 条附言  ·  2019-06-16 04:13:39 +08:00

    更新:现在可以使用更加简介的初始化方式:npm init func

    7 条回复    2019-06-15 21:33:26 +08:00
    ob
        1
    ob  
       2019-06-14 21:41:52 +08:00 via Android
    关注下
    Constellation39
        2
    Constellation39  
       2019-06-15 11:11:22 +08:00 via Android
    正好需要
    devtiange
        3
    devtiange  
       2019-06-15 14:10:30 +08:00
    太复杂, 而且要求 ts, 还要用并没有稳定下来的 decrorator, 我选择继续用 cac.
    不过还是谢谢楼主分享.
    WittBulter
        4
    WittBulter  
    OP
       2019-06-15 14:42:19 +08:00
    @devtiange
    复杂度其实算比较低的,你可以看其中的 mini example 或者脚手架,基本可以快速上手。
    置于没有稳定下来这个事吧,stage-2 估计一直都不会变了,TS 实现这个当初就是为了 NG 的,目前还是有很多知名的库都用了这个特性:`routing-controllers` / `Angular` / `type-orm` 等等。
    (我估计很难成为正式提案,但会成为一个事实标准)
    OrangeM21
        5
    OrangeM21  
       2019-06-15 18:22:42 +08:00 via iPhone
    marj
    Lxxyx
        6
    Lxxyx  
       2019-06-15 21:22:38 +08:00 via iPhone
    mark,看起来不错
    AvenirX
        7
    AvenirX  
       2019-06-15 21:33:26 +08:00 via iPhone
    有没有用过 docopt ?把帮助文档写出来,自动就实现 parser 了
    http://docopt.org/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2792 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:44 · PVG 15:44 · LAX 23:44 · JFK 02:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.