golang一键生成全栈生产级项目插件库create-go-app的使用

Golang一键生成全栈生产级项目插件库create-go-app的使用

快速开始

首先,下载并安装Go 1.21或更高版本。

安装方法

使用go install命令安装:

go install github.com/create-go-app/cli/v4/cmd/cgapp@latest

或者使用Homebrew安装(适用于GNU/Linux和macOS用户):

# 添加新的formula
brew tap create-go-app/tap

# 安装
brew install create-go-app/tap/cgapp

创建新项目

在当前目录下通过交互式控制台UI创建新项目:

cgapp create

部署项目

打开生成的Ansible inventory文件(名为hosts.ini),根据服务器配置填写变量,然后可以自动部署项目:

cgapp deploy

Docker方式快速启动

如果不希望在系统中安装Create Go App CLI,可以使用官方Docker镜像从隔离容器中运行CLI:

docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} koddr/cgapp:latest [COMMAND]

注意:deploy命令当前在此镜像中不可用。

生产就绪的项目模板

后端模板

  1. 使用Golang内置net/http包:

    • net/http - 包含CRUD和JWT认证的简单REST API
  2. 使用Fiber框架:

    • fiber - 包含CRUD、带续订令牌的JWT认证、数据库和缓存的复杂REST API
  3. 使用go-chi框架:

    • chi - 包含健康检查的基本应用

前端模板

前端部分将使用Vite.js生成,支持以下模板:

名称 描述 JavaScript Typescript
Pure 纯JavaScript/Typescript应用 vanilla vanilla-ts
React 普通React应用 react react-ts
React (SWC) 使用SWC的React应用 react-swc react-swc-ts
Preact 普通Preact应用 preact preact-ts
Vue.js 普通Vue.js应用 vue vue-ts
Svelte 普通Svelte应用 svelte svelte-ts
Solid 普通Solid应用 solid solid-ts
Lit 普通Lit应用 lit lit-ts
Qwik 普通Qwik应用 qwik qwik-ts

Next.js和Nuxt前端部分将使用最新的create-next-appnuxi工具生成。

预配置的Ansible角色

Web/代理服务器

  • Traefik Proxy角色:

    • traefik - 配置了简单ACME挑战的Traefik容器
    • traefik-acme-dns - 配置了复杂ACME DNS挑战的Traefik容器
  • Nginx角色:

    • nginx - 具有"最佳实践"配置的纯Nginx容器

数据库

  • PostgreSQL角色:
    • postgres - 配置了应用后端迁移的PostgreSQL容器

缓存(键值存储)

  • Redis角色:
    • redis - 为后端配置的Redis容器

示例代码

以下是一个使用create-go-app创建的简单Fiber后端示例:

package main

import (
	"github.com/gofiber/fiber/v2"
)

func main() {
	// 创建新的Fiber应用
	app := fiber.New()

	// 定义路由
	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello, World!")
	})

	// 启动服务器
	app.Listen(":3000")
}

注意事项

  1. 确保使用npm版本7或更高版本来正确创建项目的前端部分
  2. 使用Docker镜像时,已经包含正确版本的npm
  3. 从v2.0.0开始,推荐使用Traefik Proxy作为默认代理服务器

这个工具可以帮助开发者快速搭建生产就绪的全栈项目,专注于业务逻辑而不是基础设施配置。


更多关于golang一键生成全栈生产级项目插件库create-go-app的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang一键生成全栈生产级项目插件库create-go-app的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


create-go-app 插件库使用指南

create-go-app 是一个强大的 Go 语言全栈项目生成工具,可以帮助开发者快速搭建生产级 Go 应用程序的基础架构。下面我将详细介绍它的使用方法。

安装 create-go-app

首先需要安装 create-go-app 工具:

# 使用 Go 安装
go install github.com/create-go-app/cli/v4/cmd/cgapp@latest

# 或者使用 Homebrew (macOS/Linux)
brew install create-go-app/tap/cgapp

创建新项目

# 创建新项目
cgapp create my-awesome-app

# 或者指定项目模板
cgapp create my-awesome-app --template fiber

常用模板

create-go-app 支持多种流行框架的模板:

  • fiber - Fiber web 框架
  • gin - Gin web 框架
  • echo - Echo web 框架
  • chi - Chi 路由框架
  • standard - 标准库实现

项目结构

生成的项目通常包含以下结构:

my-awesome-app/
├── cmd/               # 主应用程序入口
├── configs/           # 配置文件
├── internal/          # 内部应用代码
│   ├── controller/    # 控制器层
│   ├── entity/        # 数据实体
│   ├── repository/    # 数据访问层
│   ├── service/       # 业务逻辑层
│   └── transport/     # 传输层(HTTP/gRPC等)
├── pkg/               # 可复用的公共代码
├── migrations/        # 数据库迁移文件
├── tests/             # 测试代码
├── web/               # 前端代码(如果选择全栈)
├── go.mod             # Go 模块文件
└── README.md          # 项目文档

代码示例

以下是一个生成的 Fiber 控制器示例:

// internal/controller/v1/user.go
package v1

import (
	"net/http"

	"github.com/gofiber/fiber/v2"
	"my-awesome-app/internal/entity"
	"my-awesome-app/internal/service"
	"my-awesome-app/pkg/response"
)

type UserController struct {
	userService service.User
}

func NewUserController(s service.User) *UserController {
	return &UserController{
		userService: s,
	}
}

// GetUsers godoc
// @Summary Get all users
// @Description Get list of all users
// @Tags users
// @Accept json
// @Produce json
// @Success 200 {object} response.Response{data=[]entity.User}
// @Failure 500 {object} response.Response
// @Router /api/v1/users [get]
func (c *UserController) GetUsers(ctx *fiber.Ctx) error {
	users, err := c.userService.GetAll(ctx.Context())
	if err != nil {
		return response.Error(ctx, http.StatusInternalServerError, err)
	}

	return response.Success(ctx, users)
}

常用命令

# 运行项目
go run cmd/app/main.go

# 构建项目
go build -o bin/app cmd/app/main.go

# 运行数据库迁移
go run cmd/migrate/main.go up

# 运行测试
go test ./...

# 生成 Swagger 文档
swag init -g cmd/app/main.go

配置管理

生成的配置管理示例:

// configs/config.go
package configs

import (
	"github.com/caarlos0/env/v6"
	"github.com/joho/godotenv"
)

type Config struct {
	App struct {
		Name    string `env:"APP_NAME" envDefault:"my-awesome-app"`
		Version string `env:"APP_VERSION" envDefault:"1.0.0"`
		Port    string `env:"APP_PORT" envDefault:"3000"`
		Env     string `env:"APP_ENV" envDefault:"development"`
	}
	
	Database struct {
		URL string `env:"DATABASE_URL,required"`
	}
	
	JWT struct {
		Secret string `env:"JWT_SECRET,required"`
	}
}

func New() (*Config, error) {
	_ = godotenv.Load() // 加载 .env 文件(可选)
	
	cfg := &Config{}
	if err := env.Parse(cfg); err != nil {
		return nil, err
	}
	
	return cfg, nil
}

优势特性

  1. 生产就绪:包含日志、监控、健康检查等生产环境必备功能
  2. 模块化设计:清晰的代码组织结构
  3. 文档支持:集成 Swagger/OpenAPI
  4. 测试友好:包含测试示例和工具
  5. 数据库支持:内置 PostgreSQL、MySQL、SQLite 等数据库集成
  6. 认证授权:JWT 认证开箱即用
  7. 前端集成:可选 Vue/React 前端模板

create-go-app 极大简化了 Go 全栈项目的初始化过程,让开发者可以专注于业务逻辑而非基础设施搭建。

回到顶部