In this article, we will look at creating our own custom include folder in Sitecore to avoid the ugliness of the folder/file structure that comes with a Sitecore installation and all of its modules.
Previously, I covered Managing Commerce Configuration to Align with Helix Principles, however this approach was overly complex and not really developer friendly. Since then I have concluded that the simpler approach would be leave the "custom" folder for the Sitecore integrations and create a dedicated custom folder outside of the "custom" for solution specific custom configurations.
Added benefits to this approach include:
- When performing an upgrade, a new or updated configuration will not override your custom configurations based on load order.
- You won't need to revisit the Layers.config file as potentially required with my previously documented approach.
- For local development, you can comfortablely delete the dedicated custom folder and redeploy, avoiding any stale custom configurations from your current build.
As the order of the layer nodes in the Layers.confg defines the order in which they load at runtime, all that is required for this approach is to add the new custom folder to Layers.config after the "Custom" layer and ensure your custom solution configuration files are placed in the App_Config/Custom_Include folder within the projects.
... <layer name="Custom" includeFolder="/App_Config/Include/"> <loadOrder> <add path="Foundation" type="Folder" /> <add path="Feature" type="Folder" /> <add path="Project" type="Folder" /> </loadOrder> </layer> <layer name="Custom_Include" includeFolder="/App_Config/Custom_Include/"> <loadOrder> <add path="Foundation" type="Folder" /> <add path="Feature" type="Folder" /> <add path="Project" type="Folder" /> </loadOrder> </layer> ...
Add the custom folder after the "Custom" layer entry and include the "Foundation", "Feature", and "Project" folders to manage configuration files using Helix principles.
No longer will you need to fight for configuration priority over the platform's standard configuration files or soil your solution with 'zzz' prefixed patch files.