# wclr/yalc

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/wclr-yalc).**

6,282 stars · 163 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/wclr/yalc
- awesome-repositories: https://awesome-repositories.com/repository/wclr-yalc.md

## Description

yalc is a local package development tool that replaces remote npm dependencies with local copies, enabling iterative testing and development of unpublished packages across multiple projects without publishing to a remote registry. It manages a global flat-file store of package copies and uses symlinks to inject those copies into a project's node_modules for real-time development workflows.

The tool operates through a copy-on-publish workflow, where publishable files from a local package are copied into the global store, mimicking a registry publish locally. It tracks installed packages via a lock file for rollback and restoration, directly manipulates package.json to add or remove local package references, and supports push-based update propagation to broadcast package updates from the central store to all consuming projects.

yalc provides a full lifecycle of local package operations, including adding, linking, publishing, updating, removing, and restoring packages. It also supports temporarily replacing a local package with the remote registry version and later restoring it, as well as publishing sub-projects within a monorepo. The tool's documentation covers installation and usage through its command-line interface.

## Tags

### Development Tools & Productivity

- [Local Package Linking](https://awesome-repositories.com/f/development-tools-productivity/local-package-linking.md) — Manages local copies of npm packages for testing and development without publishing to a remote registry.
- [Local Package Publishing](https://awesome-repositories.com/f/development-tools-productivity/local-package-repositories/local-package-publishing.md) — Copies a locally developed package's publishable files into a global store for use in other projects. ([source](https://cdn.jsdelivr.net/gh/wclr/yalc@main/README.md))
- [npm Package Symlinkers](https://awesome-repositories.com/f/development-tools-productivity/package-disk-linkers/npm-package-symlinkers.md) — Symlinks local packages into a project's node_modules for real-time development workflows.
- [Symlink-Based Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/symlink-based-dependency-management.md) — Creates symlinks from a global store into node_modules for real-time package updates without editing package.json.
- [Local Package Additions](https://awesome-repositories.com/f/development-tools-productivity/local-package-management/local-package-additions.md) — Copies a package from the global store into a project's local folder and registers it as a dependency. ([source](https://cdn.jsdelivr.net/gh/wclr/yalc@main/README.md))
- [Local Package Refreshes](https://awesome-repositories.com/f/development-tools-productivity/local-package-management/local-package-refreshes.md) — Refreshes a project's local copy of a package to the latest version from the global store. ([source](https://cdn.jsdelivr.net/gh/wclr/yalc@main/README.md))
- [Local Package Removals](https://awesome-repositories.com/f/development-tools-productivity/local-package-management/local-package-removals.md) — Deletes a package from a project's local store and cleans up its entries in package.json and the lock file. ([source](https://cdn.jsdelivr.net/gh/wclr/yalc@main/README.md))
- [Dependency State](https://awesome-repositories.com/f/development-tools-productivity/lock-files/dependency-state.md) — Uses a yalc.lock file to record installed packages and enable rollback or restoration operations.
- [Package Manifest Editors](https://awesome-repositories.com/f/development-tools-productivity/package-removal-utilities/privileged-package-removers/unified-package-removals/package-manifest-editors.md) — Directly edits project package.json to add or remove local package references during add/remove operations.

### Part of an Awesome List

- [Local Dependency Replacements](https://awesome-repositories.com/f/awesome-lists/devtools/dependency-utilities/local-dependency-replacements.md) — Replaces remote npm dependencies with local package copies during development and testing.
- [Package Management](https://awesome-repositories.com/f/awesome-lists/devtools/package-management.md) — Frontend link tool.

### Data & Databases

- [Global Package Stores](https://awesome-repositories.com/f/data-databases/flat-file-storage/global-package-stores.md) — Manages a global flat-file store of package copies for sharing across multiple local projects.
- [Local Package Caches](https://awesome-repositories.com/f/data-databases/storage-garbage-collection/package-store-sweepers/local-package-caches.md) — Stores and retrieves locally built package versions in a global cache for cross-project use.

### DevOps & Infrastructure

- [Local Copy-on-Publish Workflows](https://awesome-repositories.com/f/devops-infrastructure/package-registry-publishing/local-copy-on-publish-workflows.md) — Provides a local copy-on-publish workflow that mimics remote registry publishing for iterative development.
- [Push-Based Package Updates](https://awesome-repositories.com/f/devops-infrastructure/package-installations/push-based-package-updates.md) — Publishes a package to the global store and propagates the update to every project that has it installed. ([source](https://cdn.jsdelivr.net/gh/wclr/yalc@main/README.md))

### Software Engineering & Architecture

- [Push-Based Data Propagation](https://awesome-repositories.com/f/software-engineering-architecture/push-based-data-propagation.md) — Broadcasts package updates from a central store to all consuming projects using push-based data propagation.
