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