📦
cargo package
あまり直接使わないcargo
のコマンドにcargo-package
というのがあります:
cargo-publish
かさらにそれをラップしたcargo-releaseを使うことが多いと思います。またcargo publish --dry-run
とcargo package
が同じ動作になります。
.crate
ファイル
cargo-package
コマンドは実行するとtarget/release
以下に{crate name}-{version}.crate
なる命名規則のファイルを作ります。少なくともLinuxではこれはtar.gz
ファイルなので、tar
コマンドで中身を見ることが出来ます:
$ tar tf ocipkg-0.2.8.crate | head
ocipkg-0.2.8/.cargo_vcs_info.json
ocipkg-0.2.8/Cargo.toml
ocipkg-0.2.8/Cargo.toml.orig
ocipkg-0.2.8/README.md
ocipkg-0.2.8/src/digest.rs
ocipkg-0.2.8/src/distribution/auth.rs
ocipkg-0.2.8/src/distribution/client.rs
ocipkg-0.2.8/src/distribution/mod.rs
ocipkg-0.2.8/src/distribution/name.rs
ocipkg-0.2.8/src/distribution/reference.rs
.crate
に入るファイルはCargo.toml
で調整出来て、例えば特定のファイルを除きたい場合には次のように書きます:
[package]
# ...
exclude = [
"public/assets/*",
"videos/*",
]
このファイルのリストを取得する為に、cargo pacakge --list
というコマンドも用意されています。
cargo-package
コマンドはこの.crate
ファイルを作った後、このアーカイブを別の場所に展開してちゃんとビルドできるかを検証してくれます。--no-verify
を指定すると作るだけになります。cargo-publish
ではこのファイルをcrates.io、あるいは別のレジストリにアップロードします。この.crate
ファイルのサイズ上限がcrates.io
では10MBとなります。
Discussion