{ "uuid": [ { "value": "82f12dce-4db3-44d8-9eff-b24feb20d568" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:26+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Why I built \"Build Configs\"\n" } ], "created": [ { "value": "2023-11-21T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:26+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2023\/11\/21\/why-i-built-build-configs", "langcode": "en" } ], "body": [ { "value": "\n
Build Configs<\/a> is a tool I wrote and recently gave a lightning talk about<\/a> at the PHP South West meetup in Bristol, UK.<\/p>\n\n It's a command-line tool that creates customised per-project configuration files from a set of reusable templates.<\/p>\n\n It's a Symfony project using components such as Console, Validator, and Twig for templating.<\/p>\n\n But why did I build it?<\/p>\n\n When starting a new project, I'd copy configuration files from an existing project and alter them as needed.<\/p>\n\n If a project uses a It took time to set up new projects, and there would be drift between them.<\/p>\n\n I may have added a feature to one project, but it wouldn't exist in the one I was working on.<\/p>\n\n If I needed to move a feature from one project to another, I needed to do it manually.<\/p>\n\n Now, I have a canonical set of template files.<\/p>\n\n Instead of making ad-hoc changes to each project, I can add new features and fix bugs in the templates, and re-generate the configuration files for each project.<\/p>\n\n I don't need to worry about drift between projects because they're all in sync and generated automatically.<\/p>\n\n It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes.<\/p>\n\n If you want to see an example, watch this video<\/a> where I set up a new Drupal 10 project from nothing to running website in less than a minute.<\/p>\n\n ",
"format": "full_html",
"processed": "\n Build Configs<\/a> is a tool I wrote and recently gave a lightning talk about<\/a> at the PHP South West meetup in Bristol, UK.<\/p>\n\n It's a command-line tool that creates customised per-project configuration files from a set of reusable templates.<\/p>\n\n It's a Symfony project using components such as Console, Validator, and Twig for templating.<\/p>\n\n But why did I build it?<\/p>\n\n When starting a new project, I'd copy configuration files from an existing project and alter them as needed.<\/p>\n\n If a project uses a It took time to set up new projects, and there would be drift between them.<\/p>\n\n I may have added a feature to one project, but it wouldn't exist in the one I was working on.<\/p>\n\n If I needed to move a feature from one project to another, I needed to do it manually.<\/p>\n\n Now, I have a canonical set of template files.<\/p>\n\n Instead of making ad-hoc changes to each project, I can add new features and fix bugs in the templates, and re-generate the configuration files for each project.<\/p>\n\n I don't need to worry about drift between projects because they're all in sync and generated automatically.<\/p>\n\n It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes.<\/p>\n\n If you want to see an example, watch this video<\/a> where I set up a new Drupal 10 project from nothing to running website in less than a minute.<\/p>\n\n ",
"summary": null
}
]
}What was I doing before?<\/h2>\n\n
docroot<\/code> directory instead of
web<\/code>, a different version of PHP, or Caddy instead of Nginx, I'd need to change the files manually for the new project, add any required features, or fix any bugs.<\/p>\n\n
What was the issue with this?<\/h2>\n\n
How does Build Configs solve the issue?<\/h2>\n\n
What was I doing before?<\/h2>\n\n
docroot<\/code> directory instead of
web<\/code>, a different version of PHP, or Caddy instead of Nginx, I'd need to change the files manually for the new project, add any required features, or fix any bugs.<\/p>\n\n
What was the issue with this?<\/h2>\n\n
How does Build Configs solve the issue?<\/h2>\n\n