feat: build handlebar artifacts to tracked directory #6490
+1,679
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

🎟️ Tracking
None yet.
📔 Objective
We have a bit of a disjointed workflow this PR aims to improve that by:
namespacein theIMailServiceimplementation, simplifying the process of finding the correct templates to consume.npm run build:watch:hbsto listen to changes to template files and build*.html.hbsfiles based on the changes.The initial workflow pass involved moving files from the MJML output (
src/Core/MailTemplates/Mjml/out) into the Handlebars namespace (src/Core/MailTemplates/Handlebars) which can be error prone, especially if changes are made to a shared or common component. Making changes to a shared component requires all dependent emails be re-built and moved to the correct location, which is not scalable.This process aims to make the build process more hands-off by referencing the MJML build artifacts directly in the
IMailServiceimplementation.📸 Screenshots
A sample workflow involving the update of an image in an email
y56dly8jkU.mp4
npm run build:watch:hbsis running in the background.watchto rebuild all templates.HandlebarsMailServiceis registered as asingletonin the DI 6. Pipeline.⏰ Reminders before review
🦮 Reviewer guidelines
:+1:) or similar for great changes:memo:) or ℹ️ (:information_source:) for notes or general info:question:) for questions:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:) for suggestions / improvements:x:) or:warning:) for more significant problems or concerns needing attention:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt:pick:) for minor or nitpick changes