PackagePulse 📦
Live package health — versions, downloads, deprecations & outdated deps, right in your package.json and requirements.txt.
PackagePulse brings the npm and PyPI registries directly into your editor. No more npm outdated or checking PyPI manually — everything you need is inline.
Features
- 🛡️ Multi-Ecosystem Support: Universally parses both Node (
package.json, package-lock.json) and Python (requirements.txt) ecosystem structures.
🔍 CodeLens — Per-dependency status at a glance
Every entry in dependencies, devDependencies, peerDependencies, and optionalDependencies gets a CodeLens annotation showing:
- ✅
1.2.3 ✓ — up to date
- 🔼
→ 2.0.0 — outdated, click to update
- ⚠️
deprecated — package has been deprecated
- Weekly download count (e.g.
📦 2.1M/wk)
Hover over any package name or version to see:
- Package description
- Installed vs latest version
- License, last published date, weekly downloads
- Author info
- Quick links: npmjs.com · GitHub · Homepage
- One-click update button (when outdated)
🩺 Inline Diagnostics — Visual warnings
- Yellow squiggle under outdated version strings
- Red squiggle under deprecated package names
The Package Health panel in the Explorer sidebar groups all dependencies into:
- ⚠️ Deprecated
- 🔼 Outdated
- ✅ Up to Date
- ❌ Fetch Failed
Click any item to jump to it in the editor.
Commands
| Command |
Description |
PackagePulse: Refresh Package Info |
Clear cache and re-fetch all package data |
PackagePulse: Update All Outdated Packages |
Bump all outdated deps to latest |
PackagePulse: Open on npmjs.com |
Open a package's npm page in the browser |
Settings
| Setting |
Default |
Description |
packagepulse.enableCodeLens |
true |
Show CodeLens above each dependency |
packagepulse.enableHover |
true |
Show hover tooltips |
packagepulse.enableDiagnostics |
true |
Underline outdated/deprecated packages |
packagepulse.cacheDurationMinutes |
30 |
NPM data cache time (minutes) |
Running Locally (Development)
git clone https://github.com/nuhmanpk/packagepulse.git
cd packagepulse
npm install
npm run compile
# Then press F5 in VS Code to open the Extension Development Host
Testing
PackagePulse uses Mocha for unit tests. Tests cover the core pure-logic modules (packageParser and NpmClient) without requiring a running VS Code instance.
Prerequisites
Ensure dependencies are installed:
npm install
Run all tests
npm test
Run tests in watch mode
npm run test:watch
What's tested
| Test Suite |
File |
What it covers |
packageParser |
src/test/packageParser.test.ts |
isOutdated, formatDownloads, isPackageJson |
NpmClient |
src/test/npmClient.test.ts |
Cache TTL, deduplication, setCacheDuration, clearCache |
Test output example
PackagePulse — packageParser
isOutdated()
✓ returns false when versions match
✓ returns true when patch differs
✓ returns true when minor differs
✓ strips ^ prefix before comparing
✓ strips ~ prefix before comparing
✓ ignores wildcard *
✓ ignores "latest" tag
✓ ignores workspace: protocol
✓ ignores file: protocol
✓ ignores git URLs
✓ returns false for unknown latest
formatDownloads()
✓ formats millions
✓ formats thousands
✓ formats small numbers unchanged
isPackageJson()
✓ returns true for unix-style path
✓ returns true for windows-style path
✓ returns false for other json files
NpmClient
cache behaviour
✓ returns cached result within TTL
✓ re-fetches after cache expires
✓ clearCache() forces re-fetch
setCacheDuration()
✓ updates TTL for future fetches
in-flight deduplication
✓ does not make duplicate requests for the same package
21 passing (12ms)
Contributing
Contributions are very welcome! Please read our Contributing Guide before opening a pull request.
- Fork the repository
- Create your feature branch:
git checkout -b feat/my-feature
- Commit your changes:
git commit -m 'feat: add my feature'
- Push to the branch:
git push origin feat/my-feature
- Open a Pull Request
If PackagePulse saves you time, consider supporting the developer! 💜
License
GPL-3.0 © nuhmanpk