Repository navigation
Releases: Alok-Fusion/predeploy_check
Release list
v1.5.0 — AI-powered diagnosis
What's new
--ai flag — LLM-powered diagnosis for every failure and warning
Instead of just showing a static fix suggestion, --ai reads your actual
file contents and exact version numbers, sends them to an LLM, and streams
a specific, reasoned explanation back in real time.
ANTHROPIC_API_KEY=your-key npx predeploy-check --aiExample — instead of a generic hint like "pin to Python 3.12", you get:
pydantic-core==2.20.0 predates Python 3.13's stable wheel infrastructure
— the cp313 wheel wasn't added until 2.23.0. Your fastest fix is bumping
to pydantic-core>=2.23.0. If you can't upgrade, pin runtime.txt to
python-3.12.7 instead.
Supports:
- Claude (claude-sonnet-4-6) via
ANTHROPIC_API_KEY— preferred - GPT-4o via
OPENAI_API_KEY— fallback - Requires Node.js 18+ (uses native fetch)
- Gracefully skipped if no API key is set, network is unavailable, or
request times out — the tool always works without a key
Also in this release
Expanded npm keywords — bumped from 8 to 24 keywords covering
railway, nixpacks, nextjs, python, ci-cd, deployment-check,
static-analysis and more, for better discoverability in npm search.
Testing
Added 13 new tests for the AI module (113 total). AI tests use mocked
API calls so the full suite runs offline with no API key required.
Upgrade
npx predeploy-check@latest --helpThe --ai flag shows its current status (which provider is active, or
how to enable it) directly in the help output.
Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.5.0
v1.4.0 — Railway support
What's new
Railway deployment check — predeploy-check now supports Railway
alongside Render and Vercel. The new check catches five confirmed
real-world Railway failure patterns:
Hardcoded port — detects app.listen(3000) without a process.env.PORT
fallback. Railway injects the port at runtime, so hardcoded values cause
apps that build and run fine locally to silently fail in production.
Invalid builder — flags unsupported values in railway.toml or
railway.json. Only nixpacks, dockerfile, heroku, and railpack
are valid. Any other value causes a silent build failure.
Missing Nixpacks build plan — warns when there's no package.json,
requirements.txt, or nixpacks.toml, meaning Nixpacks cannot detect
the project type and will refuse to build.
Monorepo without explicit routing — warns when multiple subdirectories
each contain a package.json and no watchPaths is configured, since
Nixpacks won't know which app to deploy.
Missing start command — flags when neither package.json nor any
Railway config file provides a start command.
The Railway check skips automatically on non-Railway projects — it only
runs when railway.toml, railway.json, or nixpacks.toml is detected,
so Render/Vercel-only users see no change.
Testing
Added 18 new tests for the Railway check (100 total across the full suite).
Config
railway is now a valid check ID in predeploy.config.js:
module.exports = {
checks: { 'railway': false } // disable if needed
};Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.4.0
v1.3.0 — Configuration file support
What's new
predeploy.config.js support — create a config file in your project
root to customise which checks run and how they behave.
// predeploy.config.js
module.exports = {
checks: {
'render-start': false, // disable checks you don't need
'missing-engines': true,
},
ignore: ['legacy/'], // skip specific paths
options: {
'env-vars': {
envFiles: ['.env.production'], // check extra env files
},
},
};Partial configs work correctly — only specify what you want to change,
everything else stays enabled. Disabled checks appear as ⏭️ skipped with
a clear explanation rather than silently disappearing.
Details
- Config validation gives clear, actionable error messages for every
invalid case (wrong type, unknown check ID, syntax errors, etc.) - A "config loaded" notice appears in terminal output when a config file
is found, so you always know whether your config was picked up --jsonoutput now includes aconfigFilefield showing which config
was used (ornullif none)- Fixed a self-dependency bug where
predeploy-checkwas accidentally
listed as its own npm dependency
Testing
Added 23 new tests covering the config system (82 total), including
validation error messages, partial config merging, ignore path matching,
and CLI integration tests.
Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.3.0
v1.2.0 — JSON output mode
What's new
--json flag — outputs a single, clean machine-readable JSON object
instead of colored terminal text, designed for CI dashboards, GitHub bots,
editor extensions, or any tool that needs to parse results programmatically.
npx predeploy-check --json | jq '.summary'
--help --json and --version --json also return structured JSON, for
tools that want to introspect the CLI itself.
Under the hood
Refactored the core runner to separate result-collection from output
formatting, so the terminal output and JSON output now share a single
source of truth — they can't drift out of sync or disagree on a result.
Testing
Added 10 new tests covering the JSON output, including real end-to-end
CLI invocations (not just internal function calls), bringing the total
test suite to 59 tests.
Docs
Updated the README with a clearer opening description and full
documentation of the JSON output shape.
Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.2.0
v1.1.1 — Test suite, --live mode, and a real bug fix
What's new
Test suite (49 tests) — every check now has automated test coverage
using Node's built-in test runner. No extra dependencies needed; run with
npm test.
--live mode for the Python + Render check — instead of relying solely
on a built-in list of known Rust-compiled packages, --live queries PyPI
directly to confirm whether a prebuilt wheel actually exists for your
exact pinned version and Python release. Turns a "might be missing"
warning into a confirmed pass or fail.
npx predeploy-check --live
Falls back gracefully to the static check if there's no internet access,
the version is unpinned, or you're on a Node version without global fetch
(Node 18+ required for this specific flag).
Bug fix — the case-sensitivity check wasn't correctly detecting
mismatched directory names in imports (e.g. require('./Helpers')
when the actual folder on disk is helpers/). This is exactly the kind
of mismatch that breaks builds on Vercel's case-sensitive filesystem,
so it's a meaningful fix, not cosmetic.
Package metadata — added proper author, repository, and homepage
fields so the npm package page links back to this repo correctly.
Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.1.1
Full Changelog: v1.0.0...v1.1.1
v1.0.0 — Initial release
First public release of predeploy-check.
A CLI tool that scans your project before you push to Render or Vercel,
and flags known deployment-failure patterns before they cost you a wasted
deploy cycle.
What it checks
- Python + Render: Rust-compiled dependencies (pydantic, fastapi, etc.)
on Python versions that may not have prebuilt wheels yet - ESLint + Vercel: peer-dependency mismatches between eslint and
eslint-config-next, plus deprecated config options on newer Next.js versions - Case sensitivity: import paths that work locally on Windows/Mac but
break on Vercel's case-sensitive Linux filesystem - Missing engines field in package.json
- Environment variables referenced in code but not declared
- Missing start command for Render deployments
Usage
```
npx predeploy-check
```
No install required. Exit code 1 if any check fails, so it can also be
wired into a CI pipeline to block bad deploys automatically.
Available now on npm: https://www.npmjs.com/package/predeploy-check
Full Changelog: https://github.com/Alok-Fusion/predeploy_check/commits/v1.0.0