go项目目录结构规划
golang社区规范
目录结构说明
/your_project |
示例
github.com/your_username/your_project |
/your_project |
github.com/your_username/your_project |
husky
作用:自定义git hooks执行后的事件处理
常用的hook:pre-commit、commit-msg:pre-commit通常与lint-staged搭配使用,校验与格式化git暂存区内容;commit-msg通常与commitlint搭配校验commit msg的格式是否符合规范。
.husky/pre-commit hook 文件配置
#!/usr/bin/env sh |
.husky/commit hook 文件配置
#!/usr/bin/env sh |
lint-staged
作用:提交代码前,对暂存区的代码做语法检测以及格式化修复使用,常搭配eslint以及prettier,最新的可以搭配biome,以下都是使用biome
支持的配置文件有多种:可以放在package.json中也可单独使用配置文件,我们都使用单独的.lintstagedrc.json
文件,保持package.json的整洁,lint-staged搭配biome的配置如下
{ |
eslint+prettier配置方法太繁琐,博主已不再使用
commitizen
作用:命令行交互式的方式录入commit-msg:包括 type、scope、subject、short desc、long desc、break change、fix issues等
配置如下:
# 安装 |
commitizen适配器:用与扩展commitizen,咋们使用cz-conventional-changelog
适配器,常用的还有git-cz、cz-git等
cz-conventional-changelog
在package.json中的配置如下:
"config": { |
commitlint
作用:校验commit msg是否与配置的规范一致
安装:commitlint/cli(必须)、commitlint/config-conventional(可选,该npm包是已经写好的一些lint规则,可以选择不使用自己在commitlint配置文件中自定义规则)
配置如下:我们直接使用默认的commitlint/config-conventional
规则即可,使用.commitlintrc.json文件配置,也支持其他格式的配置文件,详见官方文档。
{ |
规范中常用的type-enum配置如下(行业中常用合计11种,也可以定义自己团队的type):
type | desc |
---|---|
feat | 添加新功能 |
fix | 缺陷修复 |
perf | 提高性能的改动 |
docs | 文档内容修改 |
style | 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号 |
build | 构造工具的或者外部依赖的改动,例如webpack,npm |
refactor | 代码重构 |
revert | 代码回滚 |
test | 添加测试或者修改现有测试 |
ci | CI(持续集成服务)有关的改动 |
chore | 构建过程或辅助工具的变动 |
change-log
作用:使用标准的commit msg生成change log
配置(我们使用conventional-changelog-cli
):
# 安装 |
# CHANGELOG.md 生成 |
npm pkg version 关联详见官网
go语言中引入与导出是通过包机制实现的
package是代码组织和封装的基本单位,每个Go文件都必须声明一个包,包名通常与所在目录名相同
标识符(变量、常量、类型、函数、结构体字段等))以大写字母开头则是导出,可以被其他包访问,小写只能内部访问
go语言中是区分大小写的
例子如下:
var Con = "" // 外部可访问 |
导入使用import关键字
可以多行import单独导入,也可以分组导入,如下:
// 单独导入 |
别名导入(如果没有别名,默认的是取导入路径的最后一个单词作为包名,调用包内部暴露的标识)
// 1.别名导入 |
让同一项目在不同编辑器下格式保持一致(例如:缩进、换行符等)
支持的编辑器在打开项目时会读取该文件,应用到代码中,同时与版本控制完美契合
# 顶级 EditorConfig 文件 |
# npm官方镜像源 |
# npm淘宝镜像源 |
Tip 1:https需要默认开启443端口,配置前请先确认
Tip 2:nginx 服务器需要安装 http_ssl_module 模块
我的存放目录:/etc/my-nginx
docker run -p 443:443 -v /etc/my-nginx:/etc/nginx/certs |
server { |
注:腾讯云ubuntu安装过程默认不设置root用户名以及密码,需要手动开启root用户登录
sudo passwd root |
sudo vim /etc/ssh/sshd_config |
PermitRootLogin yes # 默认值是 prohibit-password |
sudo service ssh restart |