There is a habit I stopped a few years ago: installing CLI tools globally.
npm install -g used to be the default for everything — the linter, the formatter, the scaffolder, the "useful one-liner I will probably never run again". My global package list became a museum of abandoned tools, and every Node upgrade was a roll of the dice.
The replacement is one command: npx.
What npx Actually Does
npx <package> fetches the package, runs its binary, and leaves nothing behind. No global install, no version pinned in your package.json, no cleanup. The tool exists for the duration of the command.
For one-off and occasional tools, that is exactly the right lifecycle.
The Zero-Install Pattern, Applied
Here are four tools I run this way daily — none of them are installed anywhere:
Scaffold projects
npx scaffoldx-cli
Interactive list of nine templates (React, Next.js, Express, FastAPI, Chrome extension, CLI, landing page, Discord bot, Electron). Pick, name, done — git init included.
Manage snippets
pbpaste | npx @wuchunjie/snippetx add my-snippet js
npx @wuchunjie/snippetx search my
Everything lives in ~/.snippetx/snippets.json. The tool is ephemeral; the data is yours.
Scan for leaked secrets
npx @wuchunjie/dotguard .
Walks the directory, flags exposed keys and passwords in .env files, exits non-zero on findings (so it is a one-line CI gate).
Read a repo's pulse
npx @wuchunjie/gitpulse
Commits, contributors, file breakdown, activity — one screen.
When to Use npx vs. Install
| Situation | Use |
|---|---|
| Run once or twice a year | npx |
| Tool with heavy dependencies, run occasionally | npx |
| Core daily driver (your editor, your test runner) | Install it properly |
| Team needs a pinned version | Pin in devDependencies
|
| You are not sure you will keep using it |
npx — try before you commit |
The rule of thumb: default to npx, install only when the tool earns a permanent slot.
Why This Matters More Than It Looks
A zero-install toolchain cannot rot. There is nothing to update, nothing to break on a Node upgrade, nothing to audit. The tools are as old as the last time you ran them — and as disposable.
My global npm ls -g output is now short enough to read. That is the real feature.
npm: scaffoldx-cli · @wuchunjie/snippetx · @wuchunjie/dotguard · @wuchunjie/gitpulse
From the same toolbox
-
ScaffoldX — generate production-ready project templates in seconds:
npx scaffoldx-cli -
DotGuard — scan
.envfiles for exposed secrets:npx @wuchunjie/dotguard -
GitPulse — git analytics (commits, contributors, activity) in your terminal:
npx @wuchunjie/gitpulse -
SnippetX — save, search, and copy code snippets from the terminal:
npx @wuchunjie/snippetx
☕ If This Saved You Time
All of these tools are and will always be 100% free. If they make your day a little easier, consider fueling the next one:
Built with ❤️. Zero dependencies, zero tracking, zero bloat.
Top comments (0)