[go-每日一库] go-gin项目使用realize实现代码、文件改动热更新

之前用django编写web应用时,每次保存,django应用都是重新加载-热更新,最近在写gin应用,了解到golang常用的热更新可以用到fresh/gin/gowatch/bee/realize/air等,本文主要分享realize的热更新应用。

realize

举个例子,有个叫demo的gin web项目,首先是下载realize:

go get github.com/oxequa/realize
# realize这个开源项目有点老了,官方4年都没有维护,但依然比gin(与web框架不同的gin),在go get时注意在go.mod中添加下面一行:
# replace gopkg.in/urfave/cli.v2 => github.com/urfave/cli/v2 v2.2.0
 
go install github.com/oxequa/realize

.realize.yaml

在安装了realize cmd后,可以直接使用realize init完成realize初始化,或者比较常用的可以参考官方的文档,编写自己的yaml配置文件,以下以.realize.yaml做后续分享。

settings:
  files:                        # 日志记录文件设置
    outputs:
      status: false
      path: ""
      name: .r.outputs.log
    logs:
      status: false
      path: ""
      name: .r.logs.log
    errors:
      status: false
      path: ""
      name: .r.errors.log
  legacy:
    force: false                # 是否强制轮询,最好设置为true
    interval: 100ms             # 轮询间隔,可设为10s || 100ms
server:
  status: true                  # 是否监听服务
  open: false                   # 运行时是否打开浏览器
  port: 8080                    # 监听端口,根据app server的监听端口来设置
  host: http://localhost        # 监听地址/主机
schema:
- name: server               # 项目名称
  path: D:\go_dev\src\server # 项目路径
#  args:                        # run传入参数
#  - --key1=value1
#  - --key2=value2
  commands:                     # 支持的go命令,go run/go build/go install
    run:
      status: true
    install:
      status: true
    build:
      status: false
      args:
      - -race
      method: gb build
  watcher:                      # 监视文件
    extensions:                 # 监视.go/.yaml文件
    - go
    - yaml
    paths:                      # 监视的目录
    - /
    ignore:                     # 忽略某些文件
      paths:                    # 忽略文件目录名
      - .git
      - .realize
      - vendor
      - logs
    scripts:                    # 执行脚本
    - command: tskill server    # 重载时杀掉应用,win: tskill process_name || linux/macos: pkill process_name
      type: before              # 执行脚本时机,这里设置启动前

项目使用

回到项目主目录,首先realize add,然后realize start即可启动项目,可以修改监听项中的go文件或者yaml文件,就可以看到realize确实重新加载编译了应用。

posted on 2022-12-05 23:55  进击的davis  阅读(475)  评论(0编辑  收藏  举报

导航