A modern CLI tool that displays differences between two Firestore index configuration files, helping you identify missing indexes when deploying across environments.
- 🚀 Compare Firestore index configurations between environments
- 📊 Identify missing indexes and field overrides
- 💡 Clean, colorful CLI output with progress indicators
- 📁 Export differences to JSON files for further analysis
- 🔧 Simple command-line interface
Ensure you have your Firestore index configuration files ready. You can export them using the Cloud Firestore Index Definition Reference.
pnpm dlx firestore-indexes-diff --source dev.json --target prod.json
# npx firestore-indexes-diff --source dev.json --target prod.json
# yarn dlx firestore-indexes-diff --source dev.json --target prod.jsonpnpm add -g firestore-indexes-diff
# npm install -g firestore-indexes-diff
# yarn global add firestore-indexes-diff
diff-indexes --source dev.json --target prod.json| Option | Alias | Type | Required | Description |
|---|---|---|---|---|
--source |
-s |
string | ✅ | Source indexes file path |
--target |
-t |
string | ✅ | Target indexes file path |
--version |
-v |
Show version number | ||
--help |
-h |
Show help |
The tool generates the following output files in your current directory:
diff-indexes.json- Contains missing indexesdiff-field-overrides.json- Contains missing field overrides
# Compare your development environment against production
pnpm dlx firestore-indexes-diff --source dev-indexes.json --target prod-indexes.json# Ensure staging has all the indexes from development
pnpm dlx firestore-indexes-diff --source dev-indexes.json --target staging-indexes.json# In your CI pipeline, validate index completeness
- name: Check Firestore Index Completeness
run: |
# Export current production indexes
firebase firestore:indexes > prod-indexes.json
# Export your project's indexes
firebase firestore:indexes --project ${{ env.PROJECT_ID }} > current-indexes.json
# Check for missing indexes
pnpm dlx firestore-indexes-diff --source current-indexes.json --target prod-indexes.json
# Fail if differences found
if [ -f "diff-indexes.json" ]; then
echo "Missing indexes detected!"
cat diff-indexes.json
exit 1
fi# Check multiple environments in sequence
environments=("dev" "staging" "prod")
for env in "${environments[@]}"; do
echo "Checking $env environment..."
pnpm dlx firestore-indexes-diff \
--source master-indexes.json \
--target "$env-indexes.json"
done# Clone the repository
git clone https://github.com/omar-dulaimi/firestore-indexes-diff.git
cd firestore-indexes-diff
# Install dependencies
pnpm install
# Build the project
pnpm run build
# Run in development mode
pnpm run devMIT © Omar Dulaimi