zoukankan      html  css  js  c++  java
  • 【边编码,边更新】命令行工具 Bra 介绍

    前言

    Bra(Brilliant Ridiculous Assistant)是一个个人维护的命令行工具项目。它能让开发者在编写代码的同时,实时编译、更新、加载 golang 代码,从而即时地看到新代码产生的效果。Bra 极大地提高了开发效率,非常适合 Go Web 后端开发。Grafana 项目就使用了该工具。Bra 项目地址:https://github.com/unknwon/bra

    使用示例

    本示例演示一个简单 Web 应用。该应用在浏览器上打印 Hello World。当我们通过修改打印信息代码时,Bra 工具会触发重启,便可在浏览器上查看到代码最新效果。

    package main
    
    import (
    	"io"
    	"log"
    	"net/http"
    )
    
    func main() {
    	http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
    		io.WriteString(w, "Hello World!")
    	})
    
    	log.Fatal(http.ListenAndServe(":8080", nil))
    }
    

    接下来,我们应让 Bra 工具来启动上面的 Web 应用。这需要执行 Bra 二进制程序的 run 命令,以及配置 .bra.toml 文件(该文件是 Bra 依赖的配置文件)。配置 .bra.toml 文件中定义了一些规则包括:启动程序的命令、需要监控变化的文件夹路径、可忽略的无须监控的文件名等。示例使用的 .bra.toml 如下:

    [run]
    init_cmds = [                      # 启动时执行的命令
      ["go", "build", "-o=server", "main.go"],
      ["./server"]
    ]
    watch_all = true                   # 是否监控子目录
    watch_dirs = []                    # 需要监控的目录
    watch_exts = [".go"]               # 需要监控文件的扩展名
    env_files = []                     # 载入环境变量
    ignore = [".git", "node_modules"]  # 忽略的文件目录
    ignore_files = []                  # 忽略的文件名
    follow_symlinks = false            # 是否考虑软连接
    build_delay = 1500                 # 为避免重复触发命令执行,两次触发事件的最小时间间隔(毫秒)
    interrupt_timout = 15              # 超时终止
    graceful_kill = false              # 是否优雅退出
    cmds = [                           # 触发时执行的命令
      ["go", "build", "-o=server", "main.go"],
      ["./server"]
    ]
    

    然后,准备 bra 二进制程序,可以通过如下命令构建:

    go mod init
    go build -o bra github.com/unknwon/bra
    

    最终,示例代码项目结构如下。你可以通过 ./bra run 来运行配置文件中声明的命令,启动 Web 应用,修改打印信息,查看效果 http://localhost:8080

    .
    ├── bra
    ├── go.mod
    ├── go.sum
    └── main.go
    

    配置文件

    配置文件 .bra.toml 支持一些内置变量,如 $WORKDIR 可用于 watch_dirs 中。

    总结

    Bra 工具很实用,但也有局限性。相关能力限制可查看 issue,比如不能并行执行多个进程,像上面实例中,你不能启动 Web 应用的同时,打印 echo。

  • 相关阅读:
    day1 生活大爆炸版石头剪刀布
    友谊赛
    再数17
    素数统计
    day1 LGTB玩THD
    day1 LGTB学分块
    day1 LGTB玩扫雷
    组合(1-m中选n个数)
    二分查找法,加递归,之前做了一个没加递归,结果就废了
    以前的一个程序,死循环,骚年,卡爆你的电脑吧
  • 原文地址:https://www.cnblogs.com/huanggze/p/12525136.html
Copyright © 2011-2022 走看看