Crystal は Ruby 風のシンタックスを持つ静的言語です。
shards は Crystal でバージョン v0.8.0 より正式採用されたパッケージマネージャーです。
-
ysbaddaden/shards
Dependency manager for the Crystal language
shards 概要
- Crystal 製
- 設定は YAML で shard.yml へ記載
- 任意の git レポジトリをパッケージのダウンロード先として指定可能
- github と bitbucket は特に略記が可能
- branch, tag, commit を使ってパッケージのバージョンを指定可能
- 範囲指定のような記法も可能
- Ruby の Gemfile.lock のような働きをする shard.lock を生成
shards のインストール方法
公式のコンパイル済みバイナリを落としてきて適当なパスに配置するか、Crystal でビルドします。crenv を使うと、Crystal のインストールと同時に shards のビルドが走るのでお薦めです。
shards をビルドする場合は、以下のようにして行えます。
$ git clone https://github.com/ysbaddaden/shards.git
$ cd ./shards
$ make
$ ./bin/shards --version
Shards 0.4.0 (2015-09-24)
shards の使い方
依存ライブラリのバージョンを設定ファイル shard.yml
に記述し、shards を使ってライブラリをインストールします。
基本的には、Ruby の Bundler などと同じような使い方です。shard.yml
は、Crystal v0.7.7 までサポートされていた Projectfile
にあたります。
shard.yml 記法
shards の公式ドキュメントである SPEC.md にかなり詳しく書かれているので、ここでは簡単な概要のみ説明します。
name: package_name # あなたのライブラリの名前
version: 0.1.0 # あなたのライブラリのバージョン
dependencies:
dependency_pkg_1: # 依存しているパッケージ名
github: user/repo # GitHub に存在する場合
bitbucket: user/repo # Bitbucket に存在する場合
git: git://git.example.org/crystal-library.git # 任意の Git レポジトリを指定可能
version: ~> 0.1.0 # 依存バージョンを指定 (<, <=, >=, >, ~> が使える)
branch: master # 最新に向けたりなどブランチ名で指定する場合
development_dependencies: # 開発で使う依存パッケージ
development_dependency_pkg_1:
... (略)
license: MIT # ライセンス
shards
の使い方
基本的に $ shards
と打つだけです。
$ shards --help
shards [options] <command>
Commands:
check
install
update
Options:
--no-colors
--version
--production
-v, --verbose
-q, --quiet
-h, --help
解説
shard.yml
は、ただ依存パッケージを列挙していく形で記述し、特に際立った記法ではないので直感的にかけます。
ライブラリのバージョニングは、Semantic Versioning に基づいて行ってください。Git リポジトリ上のタグも、それに基づいて v0.1.0
(プレフィックスとして v をつける) のように作成する必要があります。shards
や他の開発者がそのようにバージョニングされていることを期待するので、必ず従う必要があります。
従来の Projectfile
とは違い、依存ライブラリのバージョンを解決するために Crystal コンパイルを必要としないので、高速に動作することが期待できます。また、依存ライブラリのバージョンも詳細に指定できるようになり、やっと本格的な開発にも取り組めそうになってきました。
注意点など
-
Projectfile
からの移の際は、.crystal
,.deps
,libs
を一旦削除しましょう。何故か動かない場合があります。 - 依存ライブラリのダウンロード先が
.deps
から.shards
に変更になっていますので、忘れずに ignore しましょう。
まとめ
shards を使うと、Crystal の依存ライブラリを安全に指定することができます。ぜひ使いましょう。