コンテンツへスキップ

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.ymlshard.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.ymlshard.lockの依存関係が同期していない場合、コマンドは失敗します(installupdatechecklistコマンドで使用されます)。
  • -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