Rustのパッケージをcrates.ioに登録する

κeenです。技術の話題を書くのは久し振りですね。今日初めてRustのパッケージのセントラルレポジトリ、crates.ioにパッケージを登録したのでその流れを共有します。

登録したいパッケージを用意する

file_loggeを作りました。 しばらく前に(Advent Calendar向けに)それっぽく動くところまで作って放置してたやつですね。これを整形していきます。

(任意)ドキュメントを生成する

Rustには素晴しき cargo doc があります。

$ cargo doc --no-deps

でドキュメントを生成しましょう。ドキュメントを書いてないならこちらを見ながら書きましょう(すいません、私の奴は全然書いてないです…)。 target/doc 以下に生成されたドキュメントがあるので適当に gh-pages ブランチに放り込みましょう。 尚、--no-deps オプションがないと依存パッケージのドキュメントも全部生成してしまいます。

求: gh-pages管理のベストプラクティス。

パッケージ情報を充実させる

普段使っているままの Cargo.toml だとcrates.ioで見た時に情報が全然ありません。 [package] セクションに色々書きましょう。私の場合は

[package]
name = "file_logger"
version = "0.1.0"
authors = ["Sunrin SHIMURA (keen) <3han5chou7@gmail.com>"]

から

[package]
name = "file_logger"
version = "0.1.0"
authors = ["Sunrin SHIMURA (keen) <3han5chou7@gmail.com>"]
repository = "https://github.com/KeenS/file_logger"
keywords = ["log", "file"]
license-file = "LICENSE"
readme = "README.md"
description = "A simple logger backend that outputs to a file. \nThis is alpha state."
documentation = http://KeenS.github.io/file_logger/file_logger/

になりました。 あ、ちゃんとライセンスも明示しましょうね。

どういう情報が書けるのかはここに載ってます。

crates.ioにログインする

[crates.io]()に行き、右上にあるGitHubログインボタンをクリックします。

github login

そうするとログイン状態になります

github logged in

メニューから

menu

Account Settingsに飛ぶと下記のようにログイン用cargoコマンドが提示されるのでそのままペタっとコマンドラインに貼って終了です。

account settings

パッケージング

$ cargo package

crates.ioに登録する

$ cargo publish

その他

パッケージに含めるファイルを細かく調整したい、既にpublishしたパッケージをdeprecated的な扱いにしたいなどはこちらにドキュメントが載っています。

まとめ

  • crates.ioにログインしたよ
  • Cargoを使えば簡単にパッケージを登録出来るよ
  • Cargoってすごいね
Written by κeen