sf-meta-diff
v1.0.0
Published
CLI tool to diff Salesforce metadata between two orgs using Monaco Editor and Tailwind dark theme
Downloads
2
Maintainers
Readme
SF Metadata Diff CLI
Compare Salesforce metadata between two orgs using a diff editor.
Table of Contents
Overview
sf-meta-diff is a Node.js CLI tool to retrieve Salesforce metadata from two orgs and display a diff of the metadata in a browser.
It uses:
sf mohanc mdapi helper retrieveto fetch metadata
Features
- Compare metadata like Profiles, PermissionSet, CustomObject, etc.
- Use Salesforce Metadata Registry Explorer for metadata type names
- Use Salesforce Metadata Comparer (meta-compare) for getting the names of the metadata in your orgs
- Automatically retrieves metadata from two orgs
- Displays source and target org usernames in the header
- Side-by-side diff in the editor
- Opens diff in default browser automatically
- Cleans up temporary retrieve folders
Prerequisites
- Node.js >= 18
- Salesforce CLI (
sf) installed - Access to the orgs you want to compare
Installation
Install globally via npm: (you may need to run this command as sudo)
npm install -g sf-meta-diff Usage
sf-meta-diff -s <sourceOrgUsername> -t <targetOrgUsername> -m <metadataType> -n "<metadataName>"Options
| Option | Description |
| -------------------- | ----------------------------------------------------------- |
| -s, --source | Source org username |
| -t, --target | Target org username |
| -m, --metadatatype | Metadata type (e.g., Profile, PermissionSet) |
| -n, --name | Metadata name(s), comma-separated (e.g., "Admin,Read Only") |
Example
Compare the Admin Profile between two orgs:
sf-meta-diff -s [email protected] -t [email protected] -m Profile -n "Admin"- The CLI retrieves the profile metadata from both orgs
- Opens the diff in your default browser
- Automatically cleans up temporary retrieve folders
Screenshot

Cleanup
- Delete the folders created by this script
#!/bin/bash
# Find directories with 1, 2, or 3 digits
dirs=$(find . -maxdepth 1 -type d -regex './[0-9]\{1,3\}')
if [ -z "$dirs" ]; then
echo "No numeric folders found (1 to 3 digits)."
exit 0
fi
echo "Found the following numeric folders:"
echo "$dirs"
# Ask for confirmation
read -p "Do you want to delete these folders? [y/N] " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
for dir in $dirs; do
echo "Deleting $dir ..."
rm -rf "$dir"
done
echo "Done."
else
echo "Aborted."
fi
License
MIT © Mohan Chinnappan
