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

win-sync

v1.0.0

Published

CLI tool to backup and restore Windows development environment (Winget, NPM, PIP)

Readme

⚡ win-sync

Backup and restore your entire Windows development environment in one command — never lose your setup again.

License Release Issues Node.js OS


📖 Introduction

Switching Windows machines means reinstalling everything from memory — and forgetting half of it. win-sync scans your machine for everything you have installed, flags the apps that can't be restored automatically, and saves it all to a JSON snapshot you can restore with a single command.

✨ Features

  • 🚀 Instant full scan — detects Winget packages, NPM global packages, PIP packages, and registry-installed apps in seconds.
  • 🎨 Beautiful interactive tables — color-coded terminal tables with live spinners and a clean, modern UI (courtesy of chalk, ora, and cli-table3).
  • ⚠️ Smart manual-app detection — apps installed outside Winget are flagged as "Manual" so you know exactly what you'll need to re-download by hand.
  • 📦 JSON & Markdown export — save a machine-readable backup for 1-click restores, or a human-readable document for sharing and documentation.
  • 🔄 One-command restore — reinstall everything automatically via winget import, npm i -g, and pip install.
  • 🎯 Works with what you already have — NPM, PIP, Winget, and PowerShell are all standard on a modern Windows dev box.

📦 Installation

Install globally via npm:

npm install -g win-sync

Or run from source during development:

git clone https://github.com/barigalasunil/win-sync.git
cd win-sync
npm install
npm link

After that, the win-sync command is available anywhere on your machine.

🚀 Usage & Commands

Backup

Just run win-sync — the scan starts automatically (this is the same as win-sync backup):

win-sync
# or
win-sync backup

This detects:

  • Winget packages (Windows Package Manager)
  • NPM global packages
  • PIP packages (Python)
  • Manual apps — installed outside Winget (found via Windows Registry)

When the scan finishes, choose what to do with your setup:

| Option | Action | |--------|--------| | (B) Backup (JSON) | Save everything, including manual apps, to win-sync-setup.json | | (M) Save as Markdown only | Generate a human-readable win-sync-setup.md | | (A) Save as Both (JSON + Markdown) | Write both files | | (S) Save Auto-Restorable Only | JSON backup without manual apps | | (D) Discard and exit | Save nothing |

Note: Apps not available in Winget are listed under manual_apps and must be downloaded manually after restore.

How the backup files look

win-sync-setup.json captures everything needed for a full restore:

{
  "winget": ["Microsoft.VisualStudioCode", "Git.Git"],
  "npm": ["typescript", "eslint"],
  "pip": [{ "name": "requests", "version": "2.31.0" }],
  "manual_apps": [
    { "name": "SomeApp", "version": "1.0.0", "publisher": "SomePublisher" }
  ],
  "exportedAt": "2026-09-23T10:30:00.000Z"
}

The Markdown export (win-sync-setup.md) is a polished, human-readable snapshot with a summary table and per-category sections for Winget, NPM, PIP, and manual apps — perfect for committing to your repo or sharing in docs.

Restore

Installs all packages from the backup JSON:

win-sync restore
  • Winget packages are reinstalled in bulk via winget import
  • NPM and PIP packages are installed individually with a progress bar
  • Manual apps are listed again so you remember to download them

🖥️ Output Example

Here's what running win-sync looks like:

 _    _           _   _____ _ _
| |  | |         | | /  ___(_) |
| |  | | ___  ___| | \ `--. _| |_
| |/\| |/ _ \/ __| |  `--. \ | __|
\  /\  /  __/\__ \_| /\__/ / | |_
 \/  \/ \___||___(_) \____/|_|\__|

Windows Development Environment Backup & Restore

✔ Scanning Winget packages...
✔ Scanning NPM global packages...
✔ Scanning PIP packages...
✔ Checking for manual apps...

Scan complete — here's what was found:

┌──────────────────┬───────┬──────────────────────────────┐
│ Category         │ Count │ Status                       │
├──────────────────┼───────┼──────────────────────────────┤
│ Winget Apps      │ 48    │ ✅ Ready to backup           │
│ NPM Globals      │ 15    │ ✅ Ready to backup           │
│ PIP Packages     │ 71    │ ✅ Ready to backup           │
│ Manual Apps      │ 4     │ ⚠️ Needs re-download         │
└──────────────────┴───────┴──────────────────────────────┘

Manual apps — must be downloaded after restore:

┌──────────────────────────────────────────┬────────────┬────────────────────────────┐
│ App                                     │ Version    │ Publisher                  │
├──────────────────────────────────────────┼────────────┼────────────────────────────┤
│ Some Proprietary Tool                    │ 2.3.1      │ SomeCompany                │
│ Another GUI App                          │ 1.0.0      │ AnotherPublisher           │
└──────────────────────────────────────────┴────────────┴────────────────────────────┘

? What would you like to do with this setup?
  (B) Backup (JSON)
  (M) Save as Markdown only
  (A) Save as Both (JSON + Markdown)
  (S) Save Auto-Restorable Only (exclude manual apps)
  (D) Discard and exit

During win-sync restore, a real-time progress bar tracks each package as it's installed:

installing ████████████████████░░░░░░░░░░░░ 58% | 170/292 | [email protected]

📁 Project Structure

win-sync/
├── index.js                  # CLI entry point & command registration
├── package.json              # dependencies, metadata & bin config
├── src/
│   ├── backup.js             # backup scan + B/M/A/S/D save flow
│   ├── banner.js             # ASCII art banner + terminal maximize
│   ├── markdown-generator.js # human-readable .md export builder
│   ├── restore.js            # restore flow (winget/npm/pip + progress)
│   ├── ui.js                 # tables, spinners & interactive prompts
│   └── utils.js              # shared command runner helpers
└── test/
    ├── backup.test.js
    ├── banner.test.js
    ├── markdown-generator.test.js
    └── ui.test.js

🤝 Contributing

Contributions, issues, and feature requests are all welcome! Here's how to get started:

  1. Fork the repo and create your feature branch:

    git checkout -b feat/amazing-feature
  2. Make your changes, keeping code style consistent (CommonJS, existing utilities/patterns).

  3. Add tests for your changes and make sure the suite passes:

    npm test
  4. Commit with a clear message, push to your fork, and open a Pull Request.

Please make sure your PR is focused, well-documented, and passes all existing tests.

📄 License

Distributed under the MIT License. See LICENSE for more information.


Made for Windows developers who hate reinstalling everything twice. ⚡