コンテンツにスキップ

shards コマンド

Crystal には通常、依存関係管理ツールとして Shards が付随しています。

これは Crystal のプロジェクトやライブラリの依存関係を管理して、あるシステムやコンピュータのまたがって再現可能なインストールを実現します。

インストール方法

Shards 通常であれば Crystal 自身と共に配布されています。そうでなければ、分割されたshardsパッケージがあなたのシステムでは有効かもしれません。

ソースコードからインストールするには、リポジトリからソースコードをダウンロードかクローンしてきて、make CRFLAGS=--releaseを実行します。コンパイルされたバイナリは bin/shards にあるので、PATH にそれを追加してください。

使い方

shardsshard.yml がプロジェクトのフォルダ (現在のディレクトリ) に置いてあることを要求します。このファイルはプロジェクトの説明と、ビルドに必要な依存関係のリストを含んでいます。 デフォルトのファイルは shards init を実行することで生成できます。 そのファイル内容はShardの書き方というガイドで説明されていて、詳細な説明はshard.yml の仕様 (英語)にあります。

shards install を実行すると、指定された依存関係の解決とインストールが行なわれます。 shards install がもう一度実行されたときに同じバージョンがインストールされるために、インストールしたバージョンは shard.lock に書き出されます。

アプリケーションを開発しているのであれば、再現可能な依存関係のインストールを実現するために、shard.ymlshard.lock をバージョン管理下に置いてください。 他のshardから依存されるようなライブラリである場合 shard.lock はバージョン管理下に置くべきではあありませんshard.yml のみを含めてください。.gitignore にそれを含めることをオススメします (crystal initlib リポジトリを初期化する際にそれを自動的に行います).

shards コマンド

shards [<options>...] [<command>]

コマンドが指定されなかった場合、installがデフォルトでは実行されます。

特定のコマンドの有効なオプションを確認したい場合は、コマンド名のあとに--helpを付けて実行してください。

よく使うオプション:

  • --version: shardsのバージョンを表示
  • -h, --help: 使用方法をおおざっぱに表示
  • --no-color: 色付けされた出力を無効にする
  • --production: リリースモードで実行する。開発用の依存関係は実行されずロックされた依存関係のみがインストールされます。shard.ymlshard.lock の依存関係の同期が取れていない場合にコマンドは失敗します (installupdatecheck および list の場合)
  • -q, --quiet: ログの冗長さを減らして、警告およびエラーのみを表示するようにする
  • -v, --verbose: ログの冗長さを増して、すべてのデバッグ用のメッセージも表示するようにする

shards build

shards build [<targets>] [<options>...]

bin にある指定したターゲットをビルドします。ターゲットが指定されていなければ、すべてがビルドされます。 このコマンドはビルド前に依存関係をインストールするので、shards install を事前に実行することは必要ではありません。

コマンドに続くすべてのオプションは crystal build に渡されます。

shards check

shards check

すべての依存関係がインストールされていて、要求を満たしているか検証します。

終了コード:

  • 0: 依存関係は充足されています
  • 1: 依存関係は充足されていません

shards init

shards init

shard用のフォルダを生成して shard.yml を生成します。

shards install

shards install

依存関係を解決して、それらを lib にインストールします。shard.lock が存在しない場合、解決した依存関係、ロックしたバージョンもしくはGitコミットから生成します。

shard.lock がある場合は、そこからロックされたバージョンとコミットを読み込んで強制します。ロックされたバージョンが要求に一致しない場合、コマンドは失敗することがあります。しかし、衝突することなく新しい依存関係を追加できれば、新たなshard.lockファイルを生成してコマンドは成功します。

shards list

shards list

インストールされた依存関係とそれらのバージョンの一覧を表示します。

shards prune

shards prune

使われていない依存関係をlibフォルダから削除します。

shards update

shards update

shard.lock にロックされたバージョンやコミットがあるかどうかに関わらず、すべての依存関係を解決してlibフォルダの内容を再度更新します。最終的には新たな shard.lock を生成します。

shards version

shards version [<path>]

shard コマンドのバージョンを表示します。