CLI配布の仕組み - 開発中 vs リリース後
開発中のCLI実行方法
ビルドしたバイナリはプロジェクト内に生成されるため、PATHが通っていない。 実行するには毎回フルパスを指定するか、手動でPATHに通す必要がある。
# 方法1: シンボリックリンクでPATHの通った場所に配置
ln -s $(pwd)/target/release/my-cli /usr/local/bin/my-cli
# 方法2: cargo install(~/.cargo/bin/ に配置される)
cargo install --path .
リリース後の配布
ユーザーはパッケージマネージャ経由でインストールする。内部的にやっていることは同じ(PATHが通った場所にバイナリを置く)。
cargo install my-cli # crates.io
brew install my-cli # Homebrew
npm install -g my-cli # npm (Node製CLIの場合)
ポイント
npm i -gやcargo installが「魔法」に見えるが、本質は PATHの通ったディレクトリにバイナリを配置する だけ- 開発中は手動で同じことをしているに過ぎない
ln -sはショートカット作成。実体はビルドディレクトリにあるまま