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

shieldx

v2.0.1

Published

A CLI tool to compare, sync, and validate .env files (AI-powered soon)

Downloads

18

Readme

🛡️ ShieldX

ShieldX is a blazing-fast CLI tool to compare, sync, validate, and scan your environment/config files. It helps developers avoid missing variables, catch hardcoded secrets in code, and keep configs consistent across environments.

Short. Secure. Smart. — That's ShieldX.

npm version License: MIT CI/CD


🚀 Features

  • 🔍 Compare: Check differences between .env files (e.g., .env vs .env.production)
  • Generate: Create a .env.example automatically from an existing .env
  • 🛡️ Scan: Detect hardcoded secrets (API keys, tokens, DB URLs) with severity levels
  • Validate: Ensure .env files have all required variables
  • 📊 JSON Output: Perfect for CI/CD pipelines
  • 🚫 Smart Ignoring: Use .shieldxignore to skip files
  • 🎯 Exit Codes: Non-zero exit on issues for CI/CD integration
  • 📦 Lightweight: Zero bloat
  • 🔒 Security-first: 28+ secret pattern detectors with severity levels

📦 Installation

Use it instantly with npx (no install required):

npx shieldx compare .env .env.example

Or install globally:

npm install -g shieldx

🖥️ Usage

1. Compare two .env files

Compare files and see missing/extra variables:

shieldx compare .env .env.production

Options:

  • -j, --json - Output in JSON format
  • -v, --verbose - Show detailed output

Example output:

📊 Comparison: .env vs .env.production

❌ Missing in .env.production (2):
   - SECRET_KEY
   - API_TOKEN

⚠️  Extra in .env.production (1):
   + NEW_FEATURE_FLAG

Total: 10 keys in .env, 9 keys in .env.production

CI/CD Integration:

# Exit code 1 if files don't match
shieldx compare .env .env.example --json > comparison.json

2. Generate .env.example

Create a template file with keys only (no sensitive values):

shieldx generate .env

Options:

  • -o, --output <file> - Custom output path (default: .env.example)
  • -f, --force - Overwrite existing file
  • -j, --json - Output in JSON format
  • -v, --verbose - List all generated keys

Examples:

# Generate with custom output
shieldx generate .env -o .env.template

# Force overwrite
shieldx generate .env --force

# See what keys were generated
shieldx generate .env --verbose

3. Scan project for hardcoded secrets

Detect hardcoded API keys, passwords, tokens, and more:

shieldx scan ./src

Options:

  • -j, --json - Output in JSON format for parsing
  • -v, --verbose - Show skipped files
  • -q, --quiet - Only show errors

Security Patterns Detected:

  • ✅ Stripe API keys (live & test)
  • ✅ AWS credentials
  • ✅ GitHub tokens
  • ✅ Google API keys
  • ✅ Database connection strings
  • ✅ JWT tokens
  • ✅ Private keys (RSA, PEM, SSH)
  • ✅ OAuth tokens (Slack, Facebook, Google)
  • ✅ Bearer tokens
  • ✅ And 20+ more patterns!

Severity Levels:

  • 🔴 CRITICAL - Private keys, credentials with immediate risk
  • 🟠 HIGH - API keys, tokens, passwords
  • 🟡 MEDIUM - Session IDs, JWTs
  • 🔵 LOW - Potential secrets, long strings

Example output:

🔍 Scanning ./src for hardcoded secrets...

🚨 [HIGH] Stripe Live Key in src/payment.js:15
    const key = "sk_live_abcd1234..."
    💡 Move this to .env file

⚠️  Security Report:
   Total issues: 3
   Files scanned: 47

 CRITICAL: 1
   High: 2

Use .shieldxignore: Create a .shieldxignore file to skip certain paths:

# ShieldX Ignore Patterns
**/test/**
*.test.js
docs/

4. Validate required variables

Ensure .env files have all required keys:

shieldx validate .env --keys "DATABASE_URL,API_KEY,SECRET"

Options:

  • -k, --keys <keys> - Comma-separated required keys
  • -c, --config <file> - Load required keys from file
  • -j, --json - Output in JSON format
  • -v, --verbose - Show all present keys

Using a config file: Create required-keys.txt:

DATABASE_URL
API_KEY
SECRET_KEY

Then run:

shieldx validate .env --config required-keys.txt

Example output:

🔍 Validating .env

❌ Missing 2 required variable(s):

  ✗ API_KEY
  ✗ SECRET_KEY

💡 Add the missing variables to .env

🔧 Advanced Usage

CI/CD Integration

ShieldX returns exit code 1 on issues, perfect for CI/CD:

# GitHub Actions example
- name: Validate environment
  run: |
    shieldx compare .env.example .env.production --json
    shieldx scan ./src
    shieldx validate .env.production --keys "DATABASE_URL,API_KEY"

Pre-commit Hook

Add to .git/hooks/pre-commit:

#!/bin/bash
shieldx scan ./src --quiet
if [ $? -ne 0 ]; then
  echo "❌ Secrets detected! Fix them before committing."
  exit 1
fi

JSON Output for Automation

All commands support --json flag:

# Get JSON output for parsing
shieldx scan ./src --json > security-report.json

# Parse with jq
shieldx scan ./src --json | jq '.issuesFound'

📅 Roadmap

  • [x] Compare .env files
  • [x] Generate .env.example
  • [x] Scan for secrets with severity levels
  • [x] Validate required keys
  • [x] JSON output for CI/CD
  • [x] .shieldxignore support
  • [x] Exit codes for automation
  • [x] GitHub Actions integration
  • [ ] Auto-fix suggestions
  • [ ] Sync configs across environments
  • [ ] VSCode plugin integration
  • [ ] AI-powered secret detection (v2)
  • [ ] Encrypt/decrypt .env files

🛠️ Development

Clone and run locally:

git clone https://github.com/zeemscript/shieldx.git
cd shieldx
npm install
npm link

Run tests:

npm test
npm run test:watch

Now you can run:

shieldx compare .env .env.example

🧪 Testing

ShieldX includes a comprehensive test suite:

# Run all tests
npm test

# Run with coverage
npm test -- --coverage

# Watch mode
npm run test:watch

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Check issues for ideas!


📜 License

MIT © 2025 zeemscript


💡 Tips

Best Practices:

  • ✅ Run shieldx scan before every commit
  • ✅ Use shieldx validate in deployment pipelines
  • ✅ Keep .env.example updated with shieldx generate
  • ✅ Never commit .env files (add to .gitignore)
  • ✅ Use .shieldxignore for test fixtures

Common Workflows:

# Setup new project
shieldx generate .env
git add .env.example

# Before deploying
shieldx validate .env.production --keys "DATABASE_URL,API_KEY"
shieldx compare .env.example .env.production

# Security audit
shieldx scan ./src --verbose

Made with ❤️ by developers, for developers.