GoDev是一个实时重载开发工具,具有对Golang开发的一流支持。
寻找旧的Makefile版本?你可以在这里找到它
入门
系统要求
您需要Go> 1.11.x,GoDev才能使用,因为它使用
go mod。
安装
所有发行版还将包含所有三个受支持程序包的二进制文件以及源代码,因此您可以自己构建它。有关详细信息,请参见“编译”部分。
对于所有平台,只需运行以下命令以安装GoDev:
即将通过平台特定的软件包管理器进行安装!
用法:帮助!
对于下面有关用法的所有命令,您还可以通过
help子命令查看它们:
或检查您的版本是否有错误报告或功能:
用法:使用实时重装进行开发
godev不带标志运行是开始启用实时重新加载的开发的最简单方法:
go mod vendor
go build -o bin/app
bin/app
chmod +x bin/app
用法:实时重新测试
要运行测试,只需指定
test子命令。
要查看详细日志,请附加
--vv标志。
用法:初始化Go开发目录
要使用Go Modules初始化用于软件包管理的Golang语言开发目录,请使用
init子命令。
view
用法:通过Docker容器
GoDev也可以在Docker映像中获得
zephinzer/godev:latest。要开始使用Docker映像,请运行:
高级用法
尽管GoDev专注于Golang开发的幸福感,但它也可以用于其他语言的项目。使用配置标志将其调整为您的需求。
指令
godev
单独运行时,GoDev默认为在开发模式下运行,这意味着它将以实时重载方式运行应用程序,并根据您的代码自动进行依赖项检索。
默认情况下,GoDev将在开发中运行以进行实时重新加载。这将导致以下默认执行组:
go mod vendor
go build -o ${BUILD_OUTPUT}
--output
${BUILD_OUTPUT}
godev
-exec
test
告诉GoDev在测试模式下运行。这将更改默认执行组,以便改为运行以下命令:
go mod vendor
go build -o ${BUILD_OUTPUT}
--output
go test ./... -coverprofile c.out
test
旗 | 描述 |
---|---|
指定工作目录 | |
指定环境变量 | |
指定要观看的扩展名 | |
指定要忽略的文件/目录名称 | |
指定相对于将放置二进制文件的工作目录的路径 | |
指定文件系统事件的批处理持续时间 | |
关闭日志记录 | |
打开详细日志记录 | |
打开非常冗长的日志记录 | |
指定要观看的目录 |
init
指定此子命令将触发目录初始化流程,该流程询问是否要初始化某些未找到的文件/目录。这些是:
- Git存储库(.git)
- .gitignore
- go.mod
- main.go
- Docker文件
- .dockerignore
- 生成文件
init
旗 | 描述 |
---|---|
指定工作目录 |
view
使用文件名指定此标志会将文件打印到终端。例如,
godev view main.go将打印
main.go文件,
init如果您说“是” ,它将为您播种。
view
没有。
help
显示帮助页面。
version
显示GoDev的版本
version
--commit
--semver
标记细节
日志详细度
--vv
定义详细日志(调试级别)。对于调试或如果您想了解触发任务的原因以及调试指定执行组的管道很有用。
--vvv
定义非常详细的日志(跟踪级别)。如果您正在开发GoDev本身以跟踪事件流,则该功能将更为有用。
--silent
告诉GoDev保持完全安静。在GoDev退出之前,仅使用非零状态代码打印紧急级别的日志。
组态
--args
指定要传递到最后一个执行组的参数,该组应包含二进制文件的路径。
默认值:无
--dir
指定运行GoDev的命令的目录。
默认值:当前工作目录
--watch
指定GoDev用来监视其递归更改的目录。
默认值:当前工作目录
--env
指定要传递给命令的环境变量。
使用其中多个指定多个环境变量。
用法:
godev --env ENV=production --env HTTP_PROXY=http://localhost:1111
--exec
指定单个执行组。在执行组中指定的命令并行运行。
使用其中的多个定义多个执行组。执行组自己按顺序运行。
--exec-delim
指定
--exec标志中用于分隔命令的定界符。如果您要运行的命令包含命令作为参数,则此标志可找到其用途。
默认:
,
--exts
定义以逗号分隔的扩展名列表(不带点),以触发文件系统更改事件。
默认:
go,Makefile
--ignore
定义要忽略的文件/目录的名称。
默认:
bin,vendor
--output
定义构建输出的路径
默认:
bin/app
--rate
定义文件系统更改事件的批处理速率。如果您发现执行组中正在运行的命令花费的时间超过2秒钟,并且修改文件导致文件系统更改永无止境的触发循环,那么修改此选项将很有用。
默认:
2s
贡献
生命周期
-
启动PR-在开始问题之前,通过提交带有文档更改的PR(从您自己的叉子或从此存储库的分支开始-无关紧要)来表明您正在处理它。还请写下您将要进行的更改以及对要添加的依赖项的分析(如果有)。
-
Pass the automated checks - There's a Travis pipeline check that is mandatory before merges will be allowed.
-
Squash and merge - This keeps the commit history clean
-
(For collaborators) - Versioning - On merging, if the PR is related to non-breaking functionality optimisations/additions, do nothing. If it adds something new, consider bumping the minor release if it might change some users' workflows. If it breaks something that people are using, bump the major version.
Repository Setup
Run the following to clone this repository:
Then copy the
sample.propertiesinto
Makefile.properties:
Dependency Installation
Dependencies are stored in the
./vendordirectory. Run the following to populate the dependencies:
Static file generation
对于GoDev可以初始化的静态文件,将使用Go生成器。可以在找到
./data/generate文件,
./data.go在找到生成文件的代码
./data/generate.go。在
./data.go与每一个构建生成的,但如果你想手动生成,运行:
发展历程
开发在
./dev目录中完成。不幸的是,由于这是一个实时重新加载工具,因此实时重新加载没有实时重新加载的方法,因此,每当我们进行更改以使其可见时,我们就必须重新运行该应用程序。使用时重新编译并重新运行GoDev的命令
./dev是:
测验
要以监视模式运行测试:
要一次性运行测试(CI模式):
版本控制
我们尝试尽可能遵循semver版本控制。这表示:
- 修补程序版本颠簸以修复错误
- 次要版本会增加新的标志/行为
- 主要版本颠倒标志/行为的弃用
要获取当前版本:
更改版本:
编译成二进制
要编译GoDev,只需运行
make:
构建Docker映像
要构建GoDev图像,请运行:
配置CI管道
我们使用两种工具进行持续集成:Travis(CI管道运行器)和CodeClimate(静态代码分析)。
管道主要执行以下操作:
- 运行测试
- 构建二进制文件
- 将Gem标签中的semver版本弹出并推送到GitHub
- 如果已标记二进制文件,则将其释放到提交中
以下是需要为管道定义的变量:
CC_TEST_REPORTER_ID
DOCKER_IMAGE_REGISTRY
DOCKER_IMAGE_NAMESPACE
DOCKER_IMAGE_NAME
DOCKER_REGISTRY_USERNAME
DOCKER_REGISTRY_PASSWORD
GITHUB_OAUTH_TOKEN
GITHUB_REPOSITORY_URL
GITHUB_SSH_DEPLOY_KEY
make ssh.keys
您还需要转到GitHub存储库的设置>部署密钥,并添加从中生成
make ssh.keys的公共密钥(公共密钥应位于
./bin/id_rsa.pub,使用变量的
./bin/id_rsa_b64内容
GITHUB_SSH_DEPLOY_KEY)。
建筑笔记
组件
守望者
- 在目录级别上递归地监视文件系统,在创建新目录时监视新目录,并通过通道向主进程发送通知
- 批处理文件系统更改并通过通道通知主要过程
亚军
- 处理(重新)执行/终止已定义的执行组和命令
- 通过函数调用触发,该函数调用将终止现有管道并重新启动它们
主要过程
- 协调来自Watcher的批处理文件系统更改,并触发Runner开始执行管道
概念
管道
- 依次运行的执行组集
- 每个godev实例化一个管道
执行组
- 一组可并行运行的命令
- 执行组自己按顺序运行
命令
- 使用用户的外壳程序运行命令的原子执行单元
支持
工作时间
这是我的一个副项目,旨在满足我自己的开发需求。我有一份日常工作,因此除非在我的专业工作中使用它时有紧急需求,否则我在该存储库上的大多数代码级工作都将在周末完成。但是整个星期都支持请求请求!(:
感谢您的理解!
如果你真的喜欢
如果您真的喜欢我的工作并想支持我,可以在以下位置找到我的Patreon:
发牌二进制和源代码已根据许可的MIT许可进行了许可。有关全文,请参见LICENSE文件。
干杯给我一个