npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@john-heshima/yalc-plus

v0.2.0

Published

Local package workflow with immutable store and hardlinks

Readme

yalc-plus

Avec yalc, on se heurte vite aux lenteurs liées aux copies répétées de gros dossiers, aux limites des symlinks dans certains environnements (ex. Metro/React Native), et au manque de traçabilité fine des révisions installées. yalc-plus reprend l'idée du workflow local mais la pousse plus loin : il publie des révisions immuables dans un store dédié, installe via hardlinks quand c'est possible (ou copie sinon), et rend les mises à jour plus rapides, plus fiables et plus prévisibles.

En une phrase

yalc-plus remplace le cycle pénible "build → publier → réinstaller" par un flux local rapide, fiable et reproductible, idéal pour itérer sur une librairie et la consommer dans plusieurs apps sans repacker tout le projet à chaque fois.

Pourquoi l'utiliser

  • Accélère les boucles de dev en évitant des copies intégrales de dossiers volumineux.
  • Garantit des révisions immuables, donc des installs reproductibles et traçables.
  • Évite les problèmes de symlinks et de bundlers (React Native/Metro) en installant des fichiers normaux.
  • Fonctionne bien en monorepo comme en multi-repos.

Comment ça marche (concepts clés)

  • Store immuable : chaque publication locale crée une révision stockée dans ~/.yalc-plus.
  • Hardlinks quand possible : si le store et l'app sont sur le même device, l'installation utilise des hardlinks (ultra rapide et sans duplication réelle).
  • Fallback automatique : si le hardlink n'est pas possible, yalc-plus copie les fichiers.
  • Traçabilité : chaque app reçoit un yalc-plus.lock pour savoir exactement quelle révision est installée.
  • Détection Metro : un fichier .yalc-plus-stamp est touché pour forcer la détection de changements.

Installation

npm i -g @john-heshima/yalc-plus
# ou
npx yalc-plus --help

Workflow rapide

# Dans la lib
yalc-plus publish --push

# Dans l'app
yalc-plus add <pkg>

# Retour dans la lib
yalc-plus watch --push

Commandes

  • yalc-plus doctor
  • yalc-plus publish [--package <path>] [--no-build] [--push] [--apps <globs>]
  • yalc-plus add <pkgName> [--app <path>] [--link-mode hardlink|copy]
  • yalc-plus push <pkgName> [--apps <paths>] [--all]
  • yalc-plus remove <pkgName> [--app <path>] [--clean]
  • yalc-plus watch [--package <path>] [--apps <paths>] [--debounce <ms>]
  • yalc-plus packlist

Différences avec yalc (détaillé)

  • Store immuable par révision : chaque publish crée une révision unique, immuable et traçable. Cela évite les états flous où un même package "change" sur place.
  • Fichiers normaux (pas de symlinks) : l'installation se fait via hardlinks ou copies réelles, ce qui réduit les soucis avec des outils sensibles aux symlinks (ex. Metro).
  • Optimisation des gros packages : grâce aux hardlinks, un package volumineux n'est pas recopié entièrement à chaque fois, ce qui réduit drastiquement le temps d'installation et l'usage disque.
  • Compatibilité device-aware : si le store et le projet ne sont pas sur le même device, yalc-plus bascule automatiquement en mode copie.
  • Signaux de changement : le .yalc-plus-stamp facilite la détection de modifications côté bundler, évitant des redémarrages manuels trop fréquents.

Dépannage Metro

Après des updates, Metro peut nécessiter un reset de cache:

expo start --clear
# ou
npx react-native start --reset-cache

yalc-plus touche node_modules/<pkg>/.yalc-plus-stamp pour aider Metro à détecter les changements.

Notes

  • yalc-plus.lock est écrit dans chaque app pour tracer les packages et révisions installés.
  • Les hardlinks ne sont utilisés que si le store et l'app sont sur le même device.