5 Productivity-Enhancing Tips for Improving Your Demandware (Salesforce Commerce Cloud) Development Environment
For developers used to large, open-source communities where nearly every problem can be solved with a quick google search, starting to develop on Demandware can be painfully opaque.
The good news is that there are a lot of smart and talented developers using Demandware and creating plugins and tools… they are just harder to find.
Many of the interesting projects are behind logins on Demandware XChange or on private repos on Bitbucket or Github, meaning that search engines can’t find them.
Below I’ll introduce you to some good resources for developers new to Demandware, or grissled Demandware developers looking to learn some new tricks. If you think I’ve missed something, please feel free to add it in the comments below.
1. Switch from Eclipse to VS Code & Prophet Debugger & DW-Utils Node Package
Years ago when I started working with Demandware, you had no choice but to use Eclipse as your IDE in order to upload to your sandbox and debug because only the UX Studio plugin existed. Now you have more options, and if you like a snappier IDE with better syntax highlighting then you are in luck.
This suggestion is #1 on my list for a reason: it made me feel like my development environment jumped a decade into the future when I left Eclipse.
One note: you’ll still need to fire up Eclipse if you have to debug pipelines. But as we use fewer pipelines and more controllers, I’ve found that I can go days without opening Eclipse.
2. Join and Contribute to the Unofficial Demandware Slack Channel
This slack channel has helped me out dozens of times and you can learn a lot by seeing what other folks are working on.
3. Use The Salesforce Commerce Cloud Community Suite
The Salesforce Commerce Cloud community suite is a library of tools that can make the life of a developer much easier.
Our grunt build script, for instance, is just a customized version of the Grunt script that comes out of Community Suite.
There are lots of other projects in the Community Suite, including:
- Unit Testing / Mocking Tool
- Data Usage Tool
- Content Copy Tool
And many more…
Currently the Community Suite’s location is a bit in flux. Up until last month the repo was kept on Bitbucket but it looks like it is being moved to Github. Check this page on Demandware Xchange to find out how to get access to the community suite whenever you are reading this in the future.
4. Read Demandware Site Genesis aka Reference Architecture
I suspect that virtually all new Demandware implementations use the then-current Reference Architecture as a starting point. Once the implementation is complete, though, it can be very difficult to upgrade to a new version of the Reference Architecture without breaking the site’s customizations.
Given this, many sites will stay on the same version of the reference architecture for years while the newest Reference Architectures add really interesting features and code styles.
I encourage all Demandware developers to look over the newest Reference Architectures as they come out. Frankly this wasn’t something I did until my previous Lead Developer recommended it. I’m so glad he did.
As of this writing, the latest Reference Architecture has all sorts of new features, including…
- Client-side testing framework using Mocha and Webdriver, Docker and Selenium Server
- Tons of new interesting tasks in the Grunt and Gulp Files
You can find the latest Reference Architectures available for download on Demandware Xchange.
If you aren’t in love with .isml (and I don’t blame you!), you can always use a front-end framework you love with Demandware.
I’ve personally used React and Typescript with Demandware and really enjoyed the experience.
While I don’t have experience using Vue.js with Demandware, I don’t see why there would be a problem using it.
If you decide to use React.js, Vue.js, Typescript, or something else, you will need to setup babel or the typescript compiler to watch your files and compile them. The SFCC Community Suite can help with this.