커스텀 스피너 템플릿 작성 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

커스텀 스피너 템플릿 작성 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Go 및 TinyGo 기반 웹 애플리케이션 개발자, 템플릿 기반 프로젝트 구조 설계자

핵심 요약

  • 스피너 템플릿의 주요 기능: 프로젝트 초기화 시간 단축, 규제 준수 보장, 팀 간 일관성 유지
  • 템플릿 구조: spin-template.toml 메타데이터 파일과 content 폴더의 소스 코드 구성
  • 사용 예시: kv-go 템플릿에서 key-value 스토어 API 구현 및 tinygo build 명령어 사용
  • 필수 파라미터 정의: kebab_case, snake_case, pascal_case 등 문자열 변환 필터 포함

섹션별 세부 요약

1. 스피너 템플릿 개요

  • 템플릿 정의: 사전 정의된 프로젝트 틀로, 기존 프로젝트 구조 반복을 줄임
  • 주요 구성 요소:

- spin-template.toml: 템플릿 메타데이터 및 파라미터 정의

- content 폴더: go.mod, main.go, spin.toml 등 실제 파일 생성

- metadata/snippets/component.txt: spin add 명령어 지원

2. 템플릿 파라미터 및 필터

  • 사전 정의 파라미터:

- project-name: 사용자 입력으로부터 생성된 프로젝트 이름

- authors: Git 설정 또는 환경 변수에서 추출된 작성자 정보

  • 커스텀 필터:

- kebab_case: Hello Worldhello-world

- snake_case: Hello Worldhello_world

- pascal_case: Hello WorldHelloWorld

  • 커스텀 파라미터 정의 예시:

```toml

[parameters]

json-indention = { type = "string", default = "2", pattern = "^(2|4)$", prompt = "JSON indention size" }

```

3. `kv-go` 템플릿 구현 예시

  • 기능 요구사항:

- default 키-값 저장소 사용 권한 부여

- Spin SDK의 라우터 사용

- .go 파일 분할

  • 메타데이터 정의:

```toml

manifest_version = "1"

id = "kv-go"

description = "Key-Value data exposed via HTTP API using (Tiny)Go"

[parameters]

project-description = { type = "string", prompt = "Description", default = "" }

http-path = { type = "string", prompt = "HTTP path", default = "/...", pattern = "^/\\S*$" }

```

  • spin.toml 구성:

```toml

spin_manifest_version = 2

[application]

name = "{{project-name | kebab_case}}"

version = "0.1.0"

authors = ["{{authors}}"]

description = "{{project-description}}"

[[trigger.http]]

route = "{{http-path}}"

component = "{{project-name | kebab_case}}"

```

4. `spin add` 명령어 지원 구현

  • component.txt 내용:

```toml

[[trigger.http]]

route = "{{http-path}}"

component = "{{project-name | kebab_case}}"

[component.{{project-name | kebab_case}}]

source = "{{ output-path }}/main.wasm"

key_value_stores = ["default"]

[component.{{project-name | kebab_case}}.build]

command = "tinygo build -target=wasip1 -gc=leaking -buildmode=c-shared -no-debug -o main.wasm ."

workdir = "{{ output-path }}"

watch = ["**/*.go", "go.mod"]

```

결론

  • 실무 팁: 커스텀 템플릿을 통해 spin new 명령어로 프로젝트 초기화 시간을 30% 이상 단축 가능
  • 권장사항: spin add 명령어 지원을 위한 component.txt 파일을 반드시 포함하고, tinygo build 명령어의 workdir 파라미터를 {{ output-path }}로 설정
  • 핵심 이점: 팀 간 일관성 유지, 규제 준수 자동화, 신입 개발자 온보딩 시간 감소