Shards 命令¶
Crystal 通常与 Shards 捆绑在一起,Shards 是它的依赖管理器。
它管理 Crystal 项目和库的依赖关系,并在不同计算机和系统上实现可重复的安装。
安装¶
Shards 通常与 Crystal 本身一起分发。或者,您的系统可能提供单独的 shards
包。
要从源代码安装,请下载或克隆 存储库 并运行 make CRFLAGS=--release
。编译后的二进制文件位于 bin/shards
中,应将其添加到 PATH
中。
用法¶
shards
需要项目文件夹(工作目录)中存在 shard.yml
文件。此文件描述了项目并列出了构建项目所需的依赖关系。可以通过运行 shards init
创建默认文件。该文件的内容在 编写一个 Shard 指南 中进行了解释,并且 shard.yml 规范 提供了该文件格式的详细描述。
运行 shards install
将解析并安装指定的依赖关系。安装的版本将写入 shard.lock
文件中,以便在再次运行 shards install
时使用完全相同的依赖版本。
如果您的 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
路径中指定的 target。如果未指定 target,则构建所有 target。此命令确保所有依赖关系都已安装,因此无需在之前运行 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
再次解析并更新 lib
文件夹中的所有依赖关系,无论 shard.lock
文件中锁定了哪些版本和提交。最终会生成新的 shard.lock
文件。
shards version
¶
shards version [<path>]
打印 Shard 的版本。
修复依赖版本冲突¶
shard.override.yml
文件允许覆盖依赖关系的源和限制。可以使用环境变量 SHARDS_OVERRIDE
配置备用位置。
该文件包含一个 YAML 文档,其中包含一个 dependencies
键。它具有与 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