If you or your company enjoy using this project, please consider supporting my work and joining my discord. 💖
Command Line Tool for Salesforce Commerce Cloud Cartridge Compare. SFCC Cartridge Diff Tool. Working with SFCC Cartridge overrides just got easier: Compare client cartridge against other cartridges, Generate diffs between override files & Filter using local git changes.
Working with SFCC Cartridge overrides just got easier:
- Compare client cartridge against other cartridges
- Generate diffs between override files
- Filter using local git changes
npm install -g @sfccdevops/sfcc-cartridge-diff
git clone https://github.com/sfccdevops/sfcc-cartridge-diff.git
cd sfcc-cartridge-diff
npm install -g
You can use this tool in any of your SFCC projects. Change to the directory that contains your
dw.json
file to run the terminal command.
cd /path/to/sfcc/project
sfcc-diff --cartridge app_client_name --options
OPTIONS:
Name | Param | Alias | Definition |
---|---|---|---|
Cartridge | --cartridge |
-c |
Source Cartridge |
Diff | --diff |
-d |
Show Full Diff |
Exclude | --exclude |
-e |
List of Cartridges to Exclude |
Filter | --filter |
-f |
Filter Results for Match |
Include | --include |
-i |
List of Cartridges to Include |
Junk Only | --junk-only |
-j |
Junk Files Only |
Modified Only | --modified-only |
-m |
Modified Files Only |
This is the Default Behavior and will compare the provided cartridge to ALL cartridges in the current directory ( event nested ones ).
sfcc-diff --cartridge app_client_name
sfcc-diff -c app_client_name
If you only care about a couple of cartridges, you can speed things up by specifying which ones to compare against.
sfcc-diff --cartridge app_client_name --include storefront-reference-architecture,third_party_core
sfcc-diff -c app_client_name -i storefront-reference-architecture,third_party_core
For when you want to compare your client cartridge to ALL cartridges, but want to leave a couple out.
sfcc-diff --cartridge app_client_name --exclude link_paypal,int_payeezy
sfcc-diff -c app_client_name -e link_paypal,int_payeezy
Limit compare to just the modified files from your client
--cartridge
in your current git commit.
sfcc-diff --cartridge app_client_name --modified-only
sfcc-diff -c app_client_name -m
Sometimes a file gets copied over to override another cartridge, but ends up not being modified. These junk files are normally hard to catch via
git
since the file is technically new.
sfcc-diff --cartridge app_client_name --junk-only
sfcc-diff -c app_client_name -j
If you want to limit the results to just what matches a filter, you can use the
--filter
flag. This will match on the entire relative URL, not just the file name.
sfcc-diff --cartridge app_client_name --filter .isml
sfcc-diff -c app_client_name -f .isml
Want to actually see the changes between cartridge files? Just pass in a the Diff option and it will render it in your terminal window.
sfcc-diff --cartridge app_client_name --include storefront-reference-architecture --diff
sfcc-diff -c app_client_name -i storefront-reference-architecture -d
Want to use an existing Diff Tool to generate the diff instead of displaying it in your terminal window? Just pass in the name of a tool you already have configured with git.
sfcc-diff --cartridge app_client_name --include storefront-reference-architecture --diff=ksdiff
sfcc-diff -c app_client_name -i storefront-reference-architecture -d ksdiff
NOTE: In order to use an external app, you will need to have one configured in your ~/.gitconfig
file.
Here are a couple of apps you can use for external diffs, and how to configure them.
ksdiff - Kaleidoscope
[difftool "ksdiff"]
prompt = false
trustExitCode = true
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
bcomp - Beyond Compare
[difftool "bcomp"]
prompt = false
trustExitCode = true
cmd = bcompare -solo \"$LOCAL\" \"$REMOTE\"
meld - Meld
[difftool "meld"]
prompt = false
trustExitCode = true
cmd = meld --newtab --label=\"$MERGED\" \"$LOCAL\" \"$REMOTE\" &> /dev/null &
kdiff3 - KDiff3
[difftool "kdiff3"]
prompt = false
trustExitCode = true
cmd = open -W -a kdiff3 -n --args \"$LOCAL\" \"$REMOTE\" &> /dev/null &
Peter Schmalfeldt is a Certified Senior Salesforce Commerce Cloud Developer with over 20 years of experience building eCommerce websites, providing everything you need to design, develop & deploy eCommerce applications for Web, Mobile & Desktop platforms.
The trademarks and product names of Salesforce®, including the mark Salesforce®, are the property of Salesforce.com. SFCC DevOps is not affiliated with Salesforce.com, nor does Salesforce.com sponsor or endorse the SFCC DevOps products or website. The use of the Salesforce® trademark on this project does not indicate an endorsement, recommendation, or business relationship between Salesforce.com and SFCC DevOps.