파일 전처리를 제공하는 Hugo용 도우미입니다.
Hugo를 위한 유연한 전처리기를 제공하세요. 커뮤니티로서 핵심 Hugo 코드의 외부 처리기/프로세서에 대해 지원되는 특정 파일 형식을 얻을 수 없는 것처럼 보일 수 있기 때문입니다.
다음과 같이 파일 게시에 필요한 모든 종류의 사전 처리를 지원하기 위한 것입니다.
구성 파일은 처리를 정의하는 데 사용됩니다. 기본적으로 구성 파일 이름은 .hugo-preproc.yaml
(또는 .toml
또는 .json
)입니다.
-c
/ --config
옵션을 사용하여 명령줄에서 구성 파일을 지정할 수 있습니다.
명령을 실행하면 구성에 따라 처리가 발생합니다.
파일에는 다음 예와 같이 git
및 processors
두 가지 기본 키가 있습니다.
git :
- path : path/to/repo
processors :
- mode : head | each | all
file : path/to/output/{{ .Commit.Hash }}
template : Entry {{ .<field> }}
exec :
- path : path/to/top/directory
pattern : " *.md "
command : echo {{ . }}
git
키는 배열 객체이며, 각 배열 요소는 다음과 같이 정의됩니다.
path
- git repo에 대한 경로를 정의합니다(기본값: ".")processors
- git 로그 핸들러 배열.mode
- head
(헤드 커밋만), each
(연속적으로 프로세서를 통해 전달된 각 로그 항목) 또는 all
(프로세서를 통해 전달된 모든 항목)의 값입니다.file
- 출력할 파일입니다. 템플릿으로 처리됩니다.template
- git 로그 항목이 처리된 후 file
에 기록되는 템플릿입니다. exec
키는 배열 객체이며, 각 배열 요소는 다음과 같이 정의됩니다.
path
- 일치하는 파일 이름을 찾기 위해 탐색하고 스캔할 최상위 경로입니다.pattern
- path
내용을 재귀적으로 탐색하는 동안 파일 이름을 일치시키는 데 사용되는 패턴입니다.command
- 일치하는 파일에 대해 실행할 명령입니다. 이 값은 Go 템플릿으로 처리됩니다.배열 항목은 정의된 순서대로 순차적으로 실행됩니다.
우리는 Go 템플릿을 사용하여 각 git
핸들러의 file
및 template
키와 각 processors
개체의 command
키를 처리하고 있습니다.
표준 Go 템플릿 기능 외에 다음도 추가합니다.
fields
- structs.Names
replace
- strings.Replace
바꾸기{{replace <input> <search> <replace> <n>}}
example.drawio
command
: draw.io --export --output {{replace . ".md" ".svg" -1}} --format svg {{.}}
exec
에 사용되는 템플릿 출력: draw.io --export --output example.svg --format svg example.drawio
split
- strings.Split
분할{{split <input> <separator>}}
trimsuffix
- strings.TrimSuffix
{{trimsuffix <input> <trim_string>}}
또한 이제 Masterminds/sprig 템플릿 기능의 전체 라이브러리를 매핑했습니다. hugo-preproc
1.x
릴리스에서는 사용자 정의 템플릿 기능을 그대로 유지합니다. 2.x
릴리스로 이동하면 sprig
선호하여 위의 사용자 정의 기능을 더 이상 사용하지 않을 것입니다.
구성된 핸들러에 대해 다음 입력을 제공합니다.
git
핸들러
head
와 each
. {
Commit {
Hash string // Hash of the commit object.
Author { // Author is the original author of the commit.
Name string // Name of the Author.
Email string // Email address of the Author.
When time . Time // Date/time of the commit.
}
Committer { // Committer is the one performing the commit,
// might be different from Author.
Name string // Name of the Committer.
Email string // Email address of the Committer.
When time . Time // Date/time of the commit.
}
Message string // Message is the commit message, contains arbitrary text.
TreeHash string // TreeHash is the hash of the root tree of the commit.
ParentHashes [] string // ParentHashes are the hashes of the parent commits of the commit.
PGPSignature string // PGPSignature is the PGP signature of the commit.
}
Stats [] string // Array of strings for files changed and their stats.
}
all
. {
// Array of Commits
Commits []{
Commit {
Hash string // Hash of the commit object.
Author string // Author is the original author of the commit.
Name string // Name of the Author.
Email string // Email address of the Author.
When time . Time // Date/time of the commit.
}
Committer { // Committer is the one performing the commit,
// might be different from Author.
Name string // Name of the Committer.
Email string // Email address of the Committer.
When time . Time // Date/time of the commit.
}
Message string // Message is the commit message, contains arbitrary text.
TreeHash string // TreeHash is the hash of the root tree of the commit.
ParentHashes [] string // ParentHashes are the hashes of the parent commits of the commit.
PGPSignature string // PGPSignature is the PGP signature of the commit.
}
Stats [] string // Array of strings for files changed and their stats.
}
// Head Commit
Head {
Commit {
Hash string // Hash of the commit object.
Author string // Author is the original author of the commit.
Name string // Name of the Author.
Email string // Email address of the Author.
When time. Time // Date/time of the commit.
}
Committer { // Committer is the one performing the commit,
// might be different from Author.
Name string // Name of the Committer.
Email string // Email address of the Committer.
When time. Time // Date/time of the commit.
}
Message string // Message is the commit message, contains arbitrary text.
TreeHash string // TreeHash is the hash of the root tree of the commit.
ParentHashes [] string // ParentHashes are the hashes of the parent commits of the commit.
PGPSignature string // PGPSignature is the PGP signature of the commit.
}
Stats [] string // Array of strings for files changed and their stats.
}
}
exec
핸들러
. string // String representing the matched filename,
// including its full path (handler top search path + sub-path to file).