The official dependency manager for the Crystal programming language, handling library installation and versioning.
Shards is the official dependency manager for the Crystal programming language, handling the installation, versioning, and management of libraries (shards) for Crystal projects. It solves the problem of managing external dependencies by providing a simple YAML-based configuration and ensuring reproducible builds across different environments.
Crystal developers building applications or libraries that rely on external packages, particularly those who need consistent dependency management and version locking.
Developers choose Shards because it is the standard, built-in tool for Crystal, offering seamless integration with the language ecosystem, Git-based dependency support, and reliable version locking for reproducible installations.
Dependency manager for the Crystal language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Shards is bundled with Crystal, making it the default and seamlessly integrated dependency manager for all Crystal projects, as mentioned in the install section.
Allows installing dependencies directly from Git repositories with semantic versioning tags, providing flexibility for custom or unreleased libraries, as shown in the shard.yml example.
Generates a shard.lock file to pin dependency versions, ensuring reproducible builds when committed to version control, which is emphasized in the usage instructions.
Uses an easy-to-write shard.yml file for specifying dependencies, with clear documentation and examples provided in the README and SPEC.
Building Shards from source requires external libraries like libyaml and asciidoctor, adding setup complexity for developers, as noted in the requirements section.
Tied to Crystal's relatively small package ecosystem, which may limit library availability and variety compared to more established languages like JavaScript or Python.
Primarily relies on Git for dependency sources, which might not integrate well with other package registries or version control systems without additional workarounds.