Cover image

AEM package minifier

Content is key when working with enterprise content management systems. One step that's often incorporated in the development workflow when working with (web) CMSes is synchronisation of content from a production environment to acceptance, test and development environments. Having representative and relevant content helps with development and testing of new features and resolving issues in all stages of the development workflow.

This year I started working at a new client where we had to work with Adobe Experience Manager (AEM) content packages of more than 10Gb. Synchronizing this content periodically from production to other environments, including your local AEM instance, is time and resource consuming. Tools such as Grabbit can make your life easier, but sometimes you need the actual package zip files to provision environments. To speed up this process I created the AEM package minifier.

The solution consists of a Python script that minifies an existing AEM content package by replacing original asset files with the smallest possible dummy files. First tests resulted in reduced package sizes of more than 40%. This of course depends on the number and size of the asset files in the package. Make sure that you disable the DAM asset workflow during import, else new renditions will be created from the dummy files.

The downside of not having the original asset files is that recreating new renditions from the original files isn't possible anymore. You need to import new renditions with a new (minified) content package from an environment that still has the original assets (i.e. the production environment). This is a small price to pay for getting improvements in performance, throughput time and required storage space.

Check out the AEM package minifier on Github and let me know what you think.

Remco Rakers

Engineer, team lead, software developer. Finding simple solutions for difficult problems. Things that interest me are React, .NET, Docker, DevOps, CI/CD and agile development. When I'm not behind a computer I like to go rock climbing and running.