最強のJuliaパッケージテンプレートを考えた
これまでに10以上のJuliaのパッケージを公開してきた経験を元に, Juliaのパッケージを作るときに用いるPkgTemplates.jlの設定ファイルの推奨設定を公開しました.
依存パッケージ
パッケージの生成とドキュメントのデプロイキーの登録に次の2つのパッケージが必要となります. 次のコードを実行してインストールしましょう.
import Pkg; Pkg.add("PkgTemplates")
import Pkg; Pkg.add("DocumenterTools")
テンプレート
下記の設定ファイルの2-4行目の user, authors, repo は自分の環境に合わせて変えてください. Antique.jlの場合, それぞれ"ohno", ["Shuhei Ohno"], "Antique.jl"となります.
# Options この3行を自分で書き換える!!!
user = "JuliaFewBody"
authors = ["Shuhei Ohno", "Martin Mikkelsen"]
repo = "FewBodyHamiltonians.jl"
# Package Template
using PkgTemplates
template = Template(;
dir = @__DIR__,
user = user,
authors = authors,
julia = v"1.11",
plugins = [
# https://juliaci.github.io/PkgTemplates.jl/stable/user/#Default-Plugins
ProjectFile(; version = v"0.0.1"),
SrcDir(),
Tests(; project = true),
Readme(),
License(),
Git(; ignore = ["*/Manifest.toml"]),
GitHubActions(; extra_versions = ["1.11"]),
CompatHelper(),
TagBot(),
# Secret(),
Dependabot(),
# https://juliaci.github.io/PkgTemplates.jl/stable/user/#Code-Coverage
Codecov(),
# https://juliaci.github.io/PkgTemplates.jl/stable/user/#Documentation
Documenter{GitHubActions}(),
# https://juliaci.github.io/PkgTemplates.jl/stable/user/#Miscellaneous
Citation(; readme = true),
Formatter(),
],
)
template(repo)
# Deploy Keys
using DocumenterTools
DocumenterTools.genkeys(;
user = user,
repo = repo,
)
補足
4点補足があります. まず, 実行時に表示される案内(英語だけど本当に書いてある通り)に従って, 生成される2つのキーを登録します. カバレッジ分析を行う場合はCodecovはGitHub連携でログインし, Settings> Global Upload Tokenかアップロードキーを取得してリポジトリに登録します. 最後に, 生成されるCITATION.bibの中にあるバージョンが v1.0.0-DEV になってしまっているので修正しましょう. この問題は解決したので, そのうち必要なくなります.
- Deploy keys
Documenter - Repository secrets
DOCUMENTER_KEY - Repository secrets
CODECOV_TOKEN -
version = {v1.0.0-DEV}in CITATION.bib
そのうちパッケージの生成とこれらの操作を自動で行うGitHub Appを作りたいと考えています.
応用例
下記の組織のパッケージはいずれもこのテンプレートを活用しています.
まとめ
PkgTemplates.jlを利用して CompatHelper, TagBot, Dependabot, Codecov, Documenter, Citation など標準的な機能を全て含めたパッケージの雛形を生成する方法を簡潔にまとめました. ご質問やご提案はコメント欄または下記Xアカウントまでお願いいたします.
Discussion