gobuild

package module
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2022 License: MIT Imports: 13 Imported by: 1

README

gobuild

Test PkgGoDev Go version License

gobuild 是一个简单的 Go 代码热编译工具。 会实时监控指定目录下的文件变化(重命名,删除,创建,添加),并编译和运行程序。

命令行语法:
gobuild [options] [dependents]

options:
 -h    显示当前帮助信息;
 -v    显示 gobuild 和 Go 程序的版本信息;
 -r    是否搜索子目录,默认为 true;
 -i    是否显示被标记为 IGNORE 的日志内容,默认为 false,即不显示;
 -o    执行编译后的可执行文件名;
 -x    传递给编译程序的参数;
 -ext  需要监视的扩展名,默认值为"go",区分大小写,会去掉每个扩展名的首尾空格。
       若需要监视所有类型文件,请使用 *,传递空值代表不监视任何文件;
 -main 指定需要编译的文件,默认为""。

dependents:
 指定其它依赖的目录,只能出现在命令的尾部。
常见用法:
# 监视当前目录下的文件,若发生变化,则触发 go build -main="*.go"
gobuild

# 监视当前目录和 ~/Go/src/github.com/issue9/term 目录下的文件,
# 若发生变化,则触发 go build -main="main.go"
gobuild -main=main.go ~/Go/src/github.com/issue9/term

支持平台

平台支持依赖 colorsfsnotify 两个模块, 目前支持以下平台:windows, linux, macOS, BSD。

安装

macOS 和 linux 用户可以直接使用 brew 进行安装:

brew tap caixw/brew
brew install caixw/brew/gobuild

常用平台可以从 https://github.com/caixw/gobuild/releases 下载,并将二进制文件放入 PATH 即可。

如果不存在你当前平台的二进制,可以自己编译:

git clone https://github.com/caixw/gobuild.git
cd gobuild
./build.sh

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package gobuild 提供了对 Go 语言热编译的支持

Index

Constants

View Source
const (
	LogTypeSuccess int8 = iota
	LogTypeInfo
	LogTypeWarn
	LogTypeError
	LogTypeIgnore
)

日志类型

View Source
const MinWatcherFrequency = 1 * time.Second

MinWatcherFrequency 监视器更新频率的最小值

Variables

This section is empty.

Functions

func Build

func Build(ctx context.Context, logs chan *Log, opt *Options) error

Build 执行热编译服务

Types

type ConsoleLogs

type ConsoleLogs struct {
	Logs chan *Log
	// contains filtered or unexported fields
}

ConsoleLogs 将日志输出到控制台

func NewConsoleLogs

func NewConsoleLogs(showIgnore bool) *ConsoleLogs

NewConsoleLogs 声明 ConsoleLogs 实例

func (*ConsoleLogs) Stop

func (logs *ConsoleLogs) Stop()

Stop 停止输出

type Log

type Log struct {
	Type    int8
	Message string
}

Log 日志类型

type Options added in v0.9.0

type Options struct {
	// 指定本地化的输出对象
	//
	// 如果为空,表示原样输出,不具备本地化的功能。
	Printer *message.Printer

	// 为 go build 最后的文件参数
	//
	// 可以为空,表示当前目录。
	MainFiles string

	// 指定可执行文件输出的文件路径
	//
	// 为空表示默认值,若不带路径信息,会附加在 Dirs 的第一个路径上;
	//
	// windows 系统无须指定 .exe 扩展名,会自行添加。
	//
	// 如果带路径信息,则会使用该文件所在目录作为工作目录。
	OutputName string

	// 传递各个工具的参数
	//
	// 大致有以下几个,具体可参考 go build 的 xxflags 系列参数。
	//  - asm   --> asmflags
	//  - gccgo --> gccgoflags
	//  - gc    --> gcflags
	//  - ld    --> ldflags
	Flags map[string]string

	// 指定监视的文件扩展名
	//
	// 为空表示不监视任何文件,* 表示监视所有文件
	Exts string

	// 传递给编译成功后的程序的参数
	AppArgs string

	// 是否监视子目录
	Recursive bool

	// 表示需要监视的目录
	//
	// 至少指定一个目录,第一个目录被当作主目录,将编译其下的文件作为执行主体。
	//
	// 如果 OutputName 中未指定目录的话,第一个目录会被当作工作目录使用。
	Dirs []string

	// 监视器的更新频率
	//
	// 只有文件更新的时长超过此值,才会被定义为更新。防止文件频繁修改导致的频繁编译调用。
	//
	// 此值不能小于 MinWatcherFrequency。
	//
	// 默认值为 MinWatcherFrequency 表示的值。
	WatcherFrequency time.Duration
	// contains filtered or unexported fields
}

Options 热编译的选项

Directories

Path Synopsis
cmd
gobuild
一个简单的 Go 语言热编译工具
一个简单的 Go 语言热编译工具

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL