shardsコマンド¶
Crystalには通常、依存関係マネージャーであるShardsが付属しています。
これは、コンピューターやシステム間で再現可能なインストールを使用して、Crystalプロジェクトとライブラリの依存関係を管理します。
インストール¶
Shardsは通常、Crystal自体と一緒に配布されます。または、システムで個別のshards
パッケージが利用できる場合があります。
ソースからインストールするには、リポジトリをダウンロードまたはクローンし、make CRFLAGS=--release
を実行します。コンパイルされたバイナリはbin/shards
にあり、PATH
に追加する必要があります。
使い方¶
shards
では、プロジェクトフォルダー(作業ディレクトリ)にshard.yml
ファイルが存在する必要があります。このファイルはプロジェクトを記述し、ビルドに必要な依存関係を一覧表示します。デフォルトファイルは、shards init
を実行することで作成できます。ファイルの内容は、Shardsの作成ガイドで説明されており、ファイル形式の詳細な説明は、shard.yml仕様にあります。
shards install
を実行すると、指定された依存関係が解決され、インストールされます。インストールされたバージョンは、shards install
を再度実行するときにまったく同じ依存関係バージョンを使用するために、shard.lock
ファイルに書き込まれます。
shardがアプリケーションをビルドする場合、再現可能な依存関係インストールを提供するために、shard.yml
とshard.lock
の両方をバージョン管理にチェックインする必要があります。他のshardが依存するライブラリのみの場合は、shard.lock
をチェックインするべきではありません。shard.yml
のみをチェックインしてください。これを.gitignore
に追加することをお勧めします(crystal init
は、lib
リポジトリを初期化するときにこれを自動的に行います)。
Shardsコマンド¶
shards [<options>...] [<command>]
コマンドが指定されていない場合、デフォルトでinstall
が実行されます。
shards build
: 実行可能ファイルをビルドします。shards check
: 依存関係がインストールされていることを確認します。shards init
: 新しいshard.yml
を生成します。shards install
: 依存関係を解決してインストールします。shards list
: インストールされた依存関係を一覧表示します。shards prune
: 使用されていない依存関係を削除します。shards update
: 依存関係を解決して更新します。shards version
: shardのバージョンを表示します。
特定のコマンドで使用可能なオプションを表示するには、コマンドの後に--help
を使用します。
一般的なオプション
--version
:shards
のバージョンを出力します。-h, --help
: 使用法の概要を出力します。--no-color
: カラー出力を無効にします。--production
: リリースモードで実行します。開発依存関係はインストールされず、ロックされた依存関係のみがインストールされます。shard.yml
とshard.lock
の依存関係が同期していない場合、コマンドは失敗します(install
、update
、check
、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のバージョンを出力します。
依存関係のバージョンの競合の修正¶
shard.override.yml
ファイルを使用すると、依存関係のソースと制約をオーバーライドできます。代替の場所は、環境変数SHARDS_OVERRIDE
で構成できます。
このファイルには、単一のdependencies
キーを持つYAMLドキュメントが含まれています。shard.yml
と同じセマンティクスを持ちます。依存関係の構成は、shard.yml
または依存関係のshard.yml
の構成よりも優先されます。
ユースケースは、ローカルの作業コピー、一致しない制約にもかかわらず特定の依存関係バージョンを強制すること、依存関係の修正、未リリースの依存関係バージョンとの互換性の確認です。
ファイル内容の例
dependencies:
# Assuming we have a conflict with the version of the Redis shard
# This will override any specified version and use the `master` branch instead
redis:
github: jgaskins/redis
branch: master