SHARDS(1)
πΈ NAME πΈ
shards(1) is the manual page for shards β the dependency manager for the Crystal Language. Welcome to the Shards Manual, bestie; thatβs the name section and itβs iconic. π
β¨ SYNOPSIS β¨
shards [<general_options>...] [<command>] [<command_options>...]
π¦ DESCRIPTION π¦
Manages dependencies for Crystal projects and libraries with reproducible installs across computers and systems. no cap, reproducible installs are the whole vibe. β¨
π USAGE π
okay so shards requires the presence of a shard.yml file in the project folder (working directory). This file describes the project and lists dependencies that are required to build it. See shard.yml(5) for more information on its format. A default file can be created by running shards init. π«Ά
Running shards install resolves and installs the specified dependencies. The installed versions are written into a shard.lock file for using the exact same dependency versions when running shards install again. highkey magic, but make it lockfile. π
If your shard builds an application, both shard.yml and shard.lock should be checked into version control to provide reproducible dependency installs. If it is only a library for other shards to depend on, shard.lock should not be checked in, only shard.yml. Itβs good advice to add it to .gitignore. π
π₯ COMMANDS π₯
If no command is given, install command will be run by default. periodt.
To see the available options for a particular command, use --help after the command. iykyk.
π οΈ build [<targets>] [<build_options>...]
Builds the specified <targets> in bin path. If no targets are specified, all are built. This command ensures all dependencies are installed, so it is not necessary to run shards install before. π
All <build_options> following the command are delegated to crystal build.
β
check
Verifies that all dependencies are installed and requirements are satisfied.
Exit status:
0β Dependencies are satisfied.1β Dependencies are not satisfied.
π± init
Initializes a default shard.yml in the current folder.
π¦ install [--frozen] [--without-development] [--production] [--skip-postinstall] [--skip-executables] [--jobs=N]
Resolves and installs dependencies into the lib folder. If not already present, generates a shard.lock file from resolved dependencies, locking version numbers or Git commits. π
Reads and enforces locked versions and commits if a shard.lock file is present. The install command may fail if a locked version doesnβt match a requirement, but may succeed if a new dependency was added, as long as it doesnβt generate a conflict, thus generating a new shard.lock file.
--frozenβ Strictly installs locked versions fromshard.lock. Fails ifshard.lockis missing. π¨--without-developmentβ Does not install development dependencies.--productionβ same as--frozenand--without-development--skip-postinstallβ Does not runpostinstallof dependencies.--skip-executablesβ Does not install executables.--jobsβ Number of repository downloads to perform in parallel (default:8). Currently only for git.
π list [--tree]
Lists the installed dependencies and their versions.
Specifying --tree arranges nested dependencies in a tree, instead of a flattened list. π³
π lock [--update [<shards>...]]
Resolves dependencies and creates or updates the shard.lock file as per the install command, but never installs the dependencies.
Specifying --update follows the same semantics as the update command.
π°οΈ outdated [--pre]
Lists dependencies that are outdated.
When --pre is specified, pre-release versions are also considered.
π§Ή prune
Removes unused dependencies from lib folder.
β¬οΈ update [<shards>...]
Resolves and updates all dependencies into the lib folder, whatever the locked versions in the shard.lock file. Eventually generates a new shard.lock file.
Specifying shards will update these dependencies only, trying to be as conservative as possible with other dependencies, respecting the locked versions in the shard.lock file.
π·οΈ version [<path>]
Prints the current version of the shard located at path (defaults to current directory).
To see the available options for a particular command, use --help after a command. yes, again, because itβs important bestie π
βοΈ GENERAL OPTIONS βοΈ
--versionβ Prints the version ofshards.-h,--helpβ Prints usage synopsis.--no-colorβ Disables colored output.--localβ Do not update remote repository cache. Instead, Shards will use the local copies already present in the cache (seeSHARDS_CACHE_PATH). The command will fail if a dependency is unavailable in the cache. π¨-q,--quietβ Decreases the log verbosity, printing only warnings and errors.-v,--verboseβ Increases the log verbosity, printing all debug statements.
π» INSTALLATION π»
Shards is usually distributed with Crystal itself. Alternatively, a separate shards package may be available for your system.
To install from source, download or clone the repository <https://github.com/crystal-lang/shards> and run make CRFLAGS=--release. The compiled binary is in bin/shards and should be added to PATH. π«Ά
π ENVIRONMENT VARIABLES π
SHARDS_OPTSβ Allows general options to be passed in as environment variable. Example:SHARDS_OPTS="--no-color" shards updateSHARDS_CACHE_PATHβ Defines the cache location. In this folder, shards stores local copies of remote repositories. Defaults to.cache/shardsin the home directory ($XDG_CACHE_HOMEor$HOME) or the current directory.SHARDS_INSTALL_PATHβ Defines the location where dependencies are installed. Defaults tolib.SHARDS_BIN_PATHβ Defines the location where executables are installed. Defaults tobin.CRYSTAL_VERSIONβ Defines the crystal version that dependencies should be resolved against. Defaults to the output ofcrystal env CRYSTAL_VERSION.SHARDS_OVERRIDEβ Defines an alternate location ofshard.override.yml.
π FILES π
shard.yml
Describes a shard project including its dependencies. See shard.yml(5) for documentation.
shard.override.yml
Allows overriding the source and restriction of dependencies. An alternative location can be configured with the env var SHARDS_OVERRIDE.
The file contains a YAML document with a single dependencies key. It has the same semantics as in shard.yml. Dependency configuration takes precedence over the configuration in shard.yml or any dependencyβs shard.yml.
Use cases are local working copies, forcing a specific dependency version despite mismatching constraints, fixing a dependency, checking compatibility with unreleased dependency versions. β¨
shard.lock
Lockfile that stores information about the installed versions.
If your shard builds an application, shard.lock should be checked into version control to provide reproducible dependency installs.
If it is only a library for other shards to depend on, shard.lock should not be checked in, only shard.yml. Itβs good advice to add it to .gitignore. π
π REPORTING BUGS π
Report shards bugs to https://github.com/crystal-lang/shards/issues β bestie, they want the deets π
Crystal Language home page: https://crystal-lang.org
Β©οΈ COPYRIGHT Β©οΈ
Copyright Β© 2025 Julien Portalier.
License Apache 2.0 <http://www.apache.org/licenses/LICENSE-2.0>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. π¨
π AUTHORS π
Written by Julien Portalier and the Crystal project.
π«Ά SEE ALSO π«Ά
okay bestie, thatβs the whole page. signing off with version shards 0.20.0 and date 2024-10-25 β this was SHARDS(1), and the vibes are immaculate. mwah πβ¨
π¦ where this page comes from
- alpine 3.24: shards-doc 0.20.0-r0 Β· Apache-2.0
- nixpkgs unstable: shards 0.20.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms