ずっと育てている Julia のコードを野良パッケージ化するために、Github に雛形を作ってみたので、メモを残しておきます。
自分で試す場合は、"mat-der-D" の部分や "SpectralMethodTools" の部分は適宜自分の環境に合わせて読み替えてください。
目次
参考にしたサイト
だいたい下のサイトから学んでます。
PkgTemplates による Julia パッケージの作り方(前半) - Qiita
PkgTemplates による Julia パッケージの作り方(後半) - Qiita
Julia でのパッケージの作り方 - Qiita
Julia で自作パッケージを公式に登録する(2020年3月) - Qiita
Juliaのパッケージ開発に便利なPkgTemplates, Revise, developコマンド - Qiita
あとは PkgTemplates.jl の公式ドキュメントとか(ググって)。
環境
Ubuntu 18.04
Julia version 1.4.2
Github のリポジトリの作成
SpectralMethodTools.jl という名前の空のリポジトリを作成*1。どうやら (アッパーキャメルケースの文字列).jl というリポジトリ名にすると REPL から呼べていい感じらしい。
ちなみに Github のアカウント名は "mat-der-D" であり、以下はそれを前提に進めます。
PkgTemplates.jl を使って雛形を作成する
ここが一番苦労しました。公式ドキュメント読んでも設定多すぎるから何がなんだかだし、CI????*2という感じだったので作っては壊しを繰り返しました。
結果的には以下のページが一番分かりやすかったかもしれない。
PkgTemplates による Julia パッケージの作り方(前半) - Qiita
PkgTemplates による Julia パッケージの作り方(後半) - Qiita
最終的にはとりあえず以下の設定にしました。なおこれを実行するときのカレントディレクトリ直下に SpectralMethodTools というディレクトリが切られるので、Github 用のディレクトリを置きたい場所で実行してください。
# ↓入っていない場合は REPL の pkg モードで add PkgTemplates を先に実行 using PkgTemplates tmpl = Template(; user="mat-der-D", dir=".", authors="Smooth Pudding", julia=v"1.4", plugins=[ License(; name="MIT"), Git(; manifest=true, ssh=true), TravisCI(), Documenter{TravisCI}(), Codecov(), Coveralls() ] ) tmpl("SpectralMethodTools")
各設定の意味は PkgTemplates.jl の公式ドキュメントとにらめっこしながら考えてください。
上記を実行すると、カレントディレクトリ直下に "SpectralMethodTools" というディレクトリが作成され、その中に以下のようなファイルが自動生成されます。
$ tree ./SpectralMethodTools SpectralMethodTools/ ├── LICENSE ├── Manifest.toml ├── Project.toml ├── README.md ├── docs │ ├── Manifest.toml │ ├── Project.toml │ ├── make.jl │ └── src │ └── index.md ├── src │ └── SpectralMethodTools.jl └── test └── runtests.jl 4 directories, 10 files
Github のリポジトリに git push
ここまでの設定で既に Github の SpectralMethodTools.jl への紐付けは完了しています。これは SpectralMethodTools ディレクトリ内で以下を実行することで確認できます。
$ git remote -v origin git@github.com:mat-der-D/SpectralMethodTools.jl.git (fetch) origin git@github.com:mat-der-D/SpectralMethodTools.jl.git (push)
Github 上のリポジトリは空なので、そのまま git push すればokです。
$ git push origin master Enumerating objects: 24, done. Counting objects: 100% (24/24), done. Delta compression using up to 4 threads. Compressing objects: 100% (19/19), done. Writing objects: 100% (24/24), 4.92 KiB | 720.00 KiB/s, done. Total 24 (delta 0), reused 0 (delta 0) To github.com:mat-der-D/SpectralMethodTools.jl.git * [new branch] master -> master
最後に
上の作業で作成したリポジトリは(当然ですが)以下のURLにあります。
https://github.com/mat-der-D/SpectralMethodTools.jl
自動生成された各ファイルの役割は「参考にしたサイト」の中にいろいろ詳しく書いてあるので、知りたい方はそちらを読んでみてください。私もこれから読みます。
*1:Github のアカウントがない方は作ってからリポジトリ作成してみてください。
*2:CI=継続的インテグレーション。参考: https://cloudbees.techmatrix.jp/devops/ci/