golang实时文件监控与自动重载构建插件realize的使用

Golang实时文件监控与自动重载构建插件realize的使用

主要特性

  • 高性能的实时重载功能
  • 同时管理多个项目
  • 自定义监控路径和文件扩展名
  • 支持所有Go命令
  • 可在不同Go构建工具间切换
  • 为项目设置自定义环境变量
  • 在文件变更前后执行自定义命令
  • 将日志和错误导出到外部文件
  • 分步项目初始化
  • 重新设计的面板显示构建错误、控制台输出和警告

快速开始

安装realize:

go get github.com/oxequa/realize

命令列表

运行命令

从项目根目录执行:

$ realize start

这会创建一个.realize.yaml文件(如果不存在),将工作目录添加为项目并运行工作流。

start命令支持以下参数:

--name="name"               # 按名称运行现有配置
--path="realize/server"     # 自定义路径(未指定则使用工作目录名)
--generate                  # 启用go generate
--fmt                       # 启用go fmt
--test                      # 启用go test
--vet                       # 启用go vet
--install                   # 启用go install
--build                     # 启用go build
--run                       # 启用go run
--server                    # 启用web服务器
--open                      # 在默认浏览器中打开web界面
--no-config                 # 忽略现有配置/跳过创建新配置

添加命令

将项目添加到现有配置文件或创建新配置:

$ realize add

初始化命令

逐步创建自定义配置:

$ realize init

移除命令

按名称移除项目:

$ realize remove --name="myname"

配置示例

.realize.yaml配置文件示例:

settings:
    legacy:
        force: true             # 强制使用轮询监视器而非fsnotify
        interval: 100ms         # 轮询间隔
    resources:                  # 文件名
        outputs: outputs.log
        logs: logs.log
        errors: errors.log
server:
    status: false               # 服务器状态
    open: false                 # 启动时打开浏览器
    host: localhost             # 服务器主机
    port: 5001                  # 服务器端口
schema:
- name: coin
  path: coin                    # 项目路径
  env:                          # 启动时可用的环境变量
        test: test
        myvar: value
  commands:                     # 支持的go命令
    vet:
        status: true
    fmt:
        status: true
        args:
        - -s
        - -w
    test:
        status: true
        method: gb test         # 支持不同的构建工具
    generate:
        status: true
    install:
        status: true
    build:
        status: false
        method: gb build        # 支持不同的构建工具
        args:                   # 命令的附加参数
        - -race
    run:
        status: true
  args:                         # 传递给项目的参数
  - --myarg
  watcher:
      paths:                     # 监控路径
      - /
      ignore_paths:              # 忽略路径
      - vendor
      extensions:                # 监控的文件扩展名
      - go
      - html
      scripts:
      - type: before
        command: echo before global
        global: true
        output: true
      - type: before
        command: echo before change
        output: true
      - type: after
        command: echo after change
        output: true
      - type: after
        command: echo after global
        global: true
        output: true
      errorOutputPattern: mypattern   # 自定义错误模式

颜色参考

💙 蓝色:项目输出
💔 红色:错误
💜 紫色:时间或更改的文件
💚 绿色:成功完成的操作


更多关于golang实时文件监控与自动重载构建插件realize的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang实时文件监控与自动重载构建插件realize的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang 实时文件监控与自动重载构建插件 realize 的使用

realize 是一个强大的 Golang 开发工具,它可以监控文件变化、自动重新构建和重启应用程序,极大提高开发效率。下面详细介绍 realize 的使用方法。

安装 realize

go get github.com/oxequa/realize

或者使用二进制安装:

# Linux/macOS
curl -sSfL https://raw.githubusercontent.com/oxequa/realize/master/install.sh | sh

# Windows
scoop install realize

基本使用

1. 快速开始

最简单的使用方式是直接在项目目录下运行:

realize start

这会监控当前目录下所有 .go 文件的变化,并在变化时自动重新构建和运行。

2. 配置文件

更推荐的方式是使用配置文件 .realize.yaml 进行自定义配置:

settings:
  legacy:
    force: false
    interval: 0s
schema:
  - name: my-app
    path: .
    commands:
      run:
        status: true
      build:
        status: true
        args:
          - -o
          - ./bin/app
    watcher:
      paths:
        - /
      ignore:
        - .git
        - .realize.yaml
        - vendor
      extensions:
        - go
      scripts:
        - go mod tidy

3. 常用命令

# 查看帮助
realize --help

# 初始化配置文件
realize init

# 启动监控
realize start

# 清理日志
realize clean

# 查看版本
realize --version

高级功能

1. 自定义构建参数

schema:
  - name: my-app
    path: .
    commands:
      build:
        status: true
        args:
          - -o
          - ./bin/app
          - -ldflags
          - "-X main.version=1.0.0"

2. 文件变化时执行脚本

watcher:
  scripts:
    - go mod tidy
    - go vet ./...
    - go fmt ./...

3. 多项目监控

schema:
  - name: api-server
    path: ./api
    commands:
      run:
        status: true
    watcher:
      paths:
        - /api

  - name: web-ui
    path: ./web
    commands:
      run:
        status: true
        args:
          - -p
          - "8080"
    watcher:
      paths:
        - /web

4. 环境变量配置

schema:
  - name: my-app
    env:
      GO111MODULE: "on"
      PORT: "3000"
      DEBUG: "true"

示例代码

下面是一个完整的 .realize.yaml 示例:

settings:
  legacy:
    force: false
    interval: 0s
schema:
  - name: example-app
    path: .
    env:
      PORT: "8080"
      DEBUG: "true"
    commands:
      run:
        status: true
        args:
          - -config
          - config.yaml
      build:
        status: true
        args:
          - -o
          - ./bin/app
          - -ldflags
          - "-X main.version=1.0.0"
      test:
        status: true
        method: "go test ./..."
      install:
        status: false
    watcher:
      paths:
        - /
      ignore:
        - .git
        - .realize.yaml
        - vendor
        - bin
        - logs
      extensions:
        - go
        - yaml
      scripts:
        - go mod tidy
        - go vet ./...
        - go fmt ./...

实际开发中的使用技巧

  1. 与热加载配合:可以结合 air 或 fresh 等热加载工具使用

  2. 日志管理:realize 会输出构建和运行的日志,可以重定向到文件

  3. 性能优化:对于大型项目,可以设置忽略不必要的目录

  4. CI/CD 集成:可以在开发阶段使用 realize,生产环境则使用标准构建流程

  5. 多平台支持:realize 支持 Windows、Linux 和 macOS

注意事项

  1. realize 不适合生产环境使用,仅作为开发工具

  2. 对于非常大的项目,文件监控可能会有性能问题

  3. 如果使用非标准项目结构,需要仔细配置路径

  4. 某些 IDE 的自动保存功能可能会导致频繁触发重建

realize 是 Golang 开发中提高效率的利器,合理配置可以节省大量手动重建和重启的时间。

回到顶部