{"_id":"fast-ncu","_rev":"27-0600cd179e9df135dbb9e11a3866445b","name":"fast-ncu","dist-tags":{"latest":"1.1.2"},"versions":{"1.1.0":{"name":"fast-ncu","version":"1.1.0","keywords":["npm","check","updates","ncu","fast","dependencies","upgrade"],"author":{"name":"Uchkun Rakhimov","email":"uchkunrakhimov@gmail.com"},"license":"MIT","_id":"fast-ncu@1.1.0","maintainers":[{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"}],"bin":{"fast-ncu":"dist/cli.js"},"dist":{"shasum":"9269c8fc73946d9ab2616ef87d3815a10a5e868c","tarball":"https://registry.npmjs.org/fast-ncu/-/fast-ncu-1.1.0.tgz","fileCount":13,"integrity":"sha512-rd03K338rSON3/Sez4b8XhEuFFHD6AIn54h7/kVYiD/e/BNPNzHjilUtJc3tEzOUGX7rEjE28pSjTVGYLSDfTw==","signatures":[{"sig":"MEYCIQD15Kst9GHrdOa/AXw1vL5ahiFzCoiHZSE5YY41HCS2/wIhAJLZZ2hh4C5jiFyw9v5gSKdoNgKBwNAB85mENyqN7NbS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33188},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"301cb94b74920587d8dcd1b5eb5bfac96331364b","scripts":{"dev":"tsc -w","test":"node --test dist/__tests__/**/*.test.js","build":"tsc","start":"node dist/cli.js"},"_npmUser":{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"},"_npmVersion":"11.18.0","description":"An extremely fast alternative to npm-check-updates","directories":{},"_nodeVersion":"24.18.0","dependencies":{"semver":"^7.8.5","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@types/semver":"^7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/fast-ncu_1.1.0_1782907470375_0.21312180213194765","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"fast-ncu","version":"1.1.1","keywords":["npm","check","updates","ncu","fast","dependencies","upgrade"],"author":{"name":"Uchkun Rakhimov","email":"uchkunrakhimov@gmail.com"},"license":"MIT","_id":"fast-ncu@1.1.1","maintainers":[{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"}],"bin":{"fast-ncu":"dist/cli.js"},"dist":{"shasum":"f038d6d11c2c6d5eba0638bc5a623c009a27290f","tarball":"https://registry.npmjs.org/fast-ncu/-/fast-ncu-1.1.1.tgz","fileCount":13,"integrity":"sha512-ehM+dcDgPNroKj8Tv13P8dotIWK78/IHQO5U/UQzXEB2blVGG7jIBZxTA90Xh85iQ9eJvv99HdFkGRswb2AxKA==","signatures":[{"sig":"MEQCIBCkhTKRzXkNRSfGCrzaBRKGEfLzcFosqW9OHLmW3n+ZAiA1nALJjgW9+O2EKRZ5BM8P9+GJohwctECERfSe6siA9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34721},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"2c1dce0e82a703abc9c124207e04bfe9faf66b80","scripts":{"dev":"tsc -w","test":"node --test dist/__tests__/**/*.test.js","build":"tsc","start":"node dist/cli.js"},"_npmUser":{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"},"_npmVersion":"11.18.0","description":"An extremely fast alternative to npm-check-updates","directories":{},"_nodeVersion":"24.18.0","dependencies":{"semver":"^7.8.5","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@types/semver":"^7.7.1"},"_npmOperationalInternal":{"tmp":"tmp/fast-ncu_1.1.1_1782911543046_0.3529626534807042","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"fast-ncu","version":"1.1.2","description":"An extremely fast alternative to npm-check-updates","main":"dist/index.js","type":"module","bin":{"fast-ncu":"dist/cli.js","fncu":"dist/cli.js"},"scripts":{"build":"tsc","start":"node dist/cli.js","dev":"tsc -w","test":"node --test dist/__tests__/**/*.test.js"},"keywords":["npm","check","updates","ncu","fast","dependencies","upgrade"],"author":{"name":"Uchkun Rakhimov","email":"uchkunrakhimov@gmail.com"},"license":"MIT","dependencies":{"picocolors":"^1.1.1","semver":"^7.8.5"},"devDependencies":{"@types/node":"^26.1.0","@types/semver":"^7.7.1","typescript":"^6.0.3"},"gitHead":"a934e45bc3daa66b1e4a445a821034b3a6a4a470","types":"./dist/index.d.ts","_id":"fast-ncu@1.1.2","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-XURt6NB8zcQ0hK6JwHv5YBR92EehuctXspBio2SHwq0uWf54KZJmJsnilku8sxp2p4Y9zLtgOpM8ZC7Kg3deuA==","shasum":"8a36267b097281d484327e47e65c29fb776fdf88","tarball":"https://registry.npmjs.org/fast-ncu/-/fast-ncu-1.1.2.tgz","fileCount":13,"unpackedSize":38849,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGo2IijDQWX880jpzHZSBODBTT/zh0uVokzkQMJy78EGAiAE/j3UAnbn2NFlHuoFNpTMfcRF2yvCAElMqcezic1BTA=="}]},"_npmUser":{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"},"directories":{},"maintainers":[{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fast-ncu_1.1.2_1783012152437_0.7790151168185906"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-01T12:04:30.314Z","modified":"2026-07-02T17:09:12.716Z","1.0.0":"2025-10-04T18:46:08.308Z","1.0.1":"2025-10-04T18:52:37.894Z","1.0.2":"2025-10-04T19:02:15.910Z","1.0.3":"2025-10-04T19:45:52.869Z","1.0.4":"2025-10-04T20:14:20.761Z","1.0.5":"2025-10-05T05:26:04.696Z","1.0.6":"2025-10-05T05:54:39.511Z","1.0.7":"2025-10-05T05:59:27.669Z","1.0.8":"2025-10-05T10:18:07.405Z","1.0.9":"2025-10-05T10:48:28.120Z","1.0.10":"2025-10-06T16:57:10.837Z","1.0.11":"2025-10-06T17:07:03.792Z","1.0.12":"2025-10-06T17:38:09.640Z","1.0.13":"2025-10-06T17:43:56.511Z","1.0.14":"2025-10-06T17:48:11.684Z","1.0.16":"2025-10-06T18:23:22.867Z","1.0.17":"2025-10-06T18:27:26.902Z","1.0.18":"2025-10-06T18:50:06.933Z","1.0.19":"2025-10-06T18:53:56.093Z","1.0.20":"2025-10-06T18:55:50.427Z","1.0.21":"2025-10-06T19:01:15.392Z","1.0.22":"2025-10-06T19:06:23.789Z","1.1.0":"2026-07-01T12:04:30.555Z","1.1.1":"2026-07-01T13:12:23.195Z","1.1.2":"2026-07-02T17:09:12.607Z"},"author":{"name":"Uchkun Rakhimov","email":"uchkunrakhimov@gmail.com"},"license":"MIT","keywords":["npm","check","updates","ncu","fast","dependencies","upgrade"],"description":"An extremely fast alternative to npm-check-updates","maintainers":[{"name":"uchkunrakhimow","email":"uchkunrakhimov@gmail.com"}],"readme":"# ⚡ fast-ncu\n\nAn extremely fast, lightweight, and zero-configuration alternative to **npm-check-updates (ncu)**. It checks your `package.json` dependencies against the npm registry concurrently and upgrades them to the latest versions.\n\n🚀 **More than 3x faster than the original `npm-check-updates` on cold runs, and up to 300x faster on cached runs!**\n\n[![npm version](https://img.shields.io/npm/v/fast-ncu.svg?style=flat)](https://www.npmjs.com/package/fast-ncu)\n[![TypeScript](https://img.shields.io/badge/TypeScript-%23007ACC.svg?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![license](https://img.shields.io/npm/l/fast-ncu.svg?style=flat)](https://github.com/uchkunr/fast-ncu/blob/master/LICENSE)\n\n---\n\n## ⚡ Performance Comparison (Benchmark)\n\nTested on a repository containing **78 dependencies** (the `npm-check-updates` codebase itself):\n\n| Tool | Concurrency | Cache | Time (Seconds) | Speedup |\n| :--- | :--- | :--- | :--- | :--- |\n| 🐢 **Original `ncu`** | Default | N/A | `2.75s` | *Baseline* |\n| ⚡ **`fast-ncu` (Cold)** | `15` (Default) | Disabled | `2.70s` | `1.0x` |\n| 🚀 **`fast-ncu` (Cold)** | `30` | Disabled | **`0.88s`** | **3.1x faster** |\n| 🛸 **`fast-ncu` (Warm)** | `30` | Enabled (Hit) | **`0.01s`** (10ms) | **275x faster** |\n\n---\n\n## 🛠️ How it works (Why it's so fast)\n\nMost developers don't realize how much overhead goes into checking package versions. Here is how `fast-ncu` achieves extreme performance:\n\n### 1. Tiny payloads via `/latest` CDN Edge Endpoint\n*   **The Problem:** Normal tools query `https://registry.npmjs.org/<pkg>` which returns the full package metadata (all historical versions, SHAs, dates, and readmes). For packages like `typescript` or `aws-sdk`, this JSON can be **several megabytes**.\n*   **The Solution:** We query `https://registry.npmjs.org/<pkg>/latest`. This returns a tiny, CDN-cached JSON object containing only the latest version details (~2KB). Our benchmarks show that the `/latest` endpoint is **over 4x faster** to resolve than the standard packument endpoint.\n\n### 2. High-Performance Concurrency Limiter\n*   We developed an optimized, zero-dependency concurrency queue controller. It runs async HTTP requests in parallel with an adjustable limit (e.g. `--concurrency 30`), maximizing your network bandwidth without causing socket exhaustion or registry rate limits.\n\n### 3. Ultra-Fast Startup Time (ESM + Zero Bloat)\n*   By avoiding heavy CLI packages (like `yargs`, `commander`) and bulky utilities (like `chalk`), the entire Node.js runtime boots and prints output in **under 40ms**. We use native ES Modules and `picocolors` (which starts up instantly and has zero dependencies).\n\n### 4. Smart Local Caching Layer\n*   Subsequent runs are instantaneous. It safely stores the fetched versions in your system's temp directory (`/tmp/fast-ncu-cache.json`) for 5 minutes (configurable). A second run takes **10ms** to check any number of packages!\n\n---\n\n## 📦 Installation\n\nRun it on the fly using `npx`:\n\n```bash\n# Using fast-ncu\nnpx fast-ncu\n\n# Or using the shorthand alias\nnpx fncu\n```\n\nOr install globally:\n\n```bash\nnpm install -g fast-ncu\n```\n\nOnce globally installed, you can use the command `fast-ncu` or its convenient shorthand `fncu`.\n\n---\n\n## 🚀 Usage\n\nYou can use the full name `fast-ncu` or the shorter shorthand `fncu` interchangeably:\n\n```bash\n# Check dependencies for updates (Safe - read only)\nfncu\n\n# Overwrite package.json with the upgraded versions\nfncu -u\n\n# Maximize speed by raising concurrency\nfncu --concurrency 30\n\n# Force bypass the cache\nfncu --no-cache\n```\n\n## ⚙️ Options\n\n*   `-u, --upgrade`          Overwrite package.json with upgraded versions\n*   `--concurrency <num>`    Number of concurrent registry requests (default: 15)\n*   `--no-cache`             Disable local caching\n*   `-v, --version`          Show version of fast-ncu / fncu\n*   `-h, --help`             Show help\n\n## 🧪 Tests\n\nThe project includes unit tests using Node's native test runner (zero external testing dependencies).\n\nTo compile and run tests:\n```bash\nnpm run build\nnpm test\n```\n\n## 📄 License\nMIT\n","readmeFilename":"README.md"}