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
更多关于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 ./...
实际开发中的使用技巧
-
与热加载配合:可以结合 air 或 fresh 等热加载工具使用
-
日志管理:realize 会输出构建和运行的日志,可以重定向到文件
-
性能优化:对于大型项目,可以设置忽略不必要的目录
-
CI/CD 集成:可以在开发阶段使用 realize,生产环境则使用标准构建流程
-
多平台支持:realize 支持 Windows、Linux 和 macOS
注意事项
-
realize 不适合生产环境使用,仅作为开发工具
-
对于非常大的项目,文件监控可能会有性能问题
-
如果使用非标准项目结构,需要仔细配置路径
-
某些 IDE 的自动保存功能可能会导致频繁触发重建
realize 是 Golang 开发中提高效率的利器,合理配置可以节省大量手动重建和重启的时间。