General Architecture

General architecture

(Tyr) is a new package manager under active development, implemented in Rust. It's designed to provide efficient dependency management for projects, inspired by existing tools like Yarn and Pnpm.

Tyr aims to emulate the development pattern established by Yarn's core package @yarnpkg/core (opens in a new tab). While not fully realized yet, Tyr intends to provide similar core components that serve as the foundation for managing projects and dependencies.

Modules Overview

CLI Module

The CLI module handles parsing and validating command-line arguments using the Clap library. It provides a user-friendly interface for interacting with Tyr's functionalities.

HTTP Module

The HTTP module is responsible for making HTTP requests, primarily used for fetching package metadata from the NPM registry. It utilizes the Ureq library for performing HTTP operations efficiently.

Filesystem Module

The Filesystem module deals with file I/O operations, specifically related to managing the package.json and tyr.lock files. It provides functionality to create, update, and manipulate these essential configuration files for Tyr projects.

Semver Module

The Semver module is responsible for parsing and resolving semantic versioning (semver) constraints. It facilitates dependency resolution by determining which versions of a package satisfy given version constraints.

Init Module

The Init module scaffolds new Tyr projects, providing a starting point for developers to begin working on their applications. It sets up the necessary project structure and configuration files.

Unzip Module

The Unzip module utilizes the Gzib library to unpack compressed archives, primarily used for extracting packages into the node_modules directory. It ensures efficient extraction of package contents while handling various compression formats.