<p><a href="/build-configs">Build Configs</a> is a tool I wrote and recently <a href="/presentations/building-build-configs">gave a lightning talk about</a> at the PHP South West meetup in Bristol, UK.</p>
<p>It's a command-line tool that creates customised per-project configuration files from a set of reusable templates.</p>
<p>It's a Symfony project using components such as Console, Validator, and Twig for templating.</p>
<p>But why did I build it?</p>
<h2 id="what-was-i-doing-before%3F">What was I doing before?</h2>
<p>When starting a new project, I'd copy configuration files from an existing project and alter them as needed.</p>
<p>If a project uses a <code>docroot</code> directory instead of <code>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>
<h2 id="what-was-the-issue-with-this%3F">What was the issue with this?</h2>
<p>It took time to set up new projects, and there would be drift between them.</p>
<p>I may have added a feature to one project, but it wouldn't exist in the one I was working on.</p>
<p>If I needed to move a feature from one project to another, I needed to do it manually.</p>
<h2 id="how-does-build-configs-solve-the-issue%3F">How does Build Configs solve the issue?</h2>
<p>Now, I have a canonical set of template files.</p>
<p>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>
<p>I don't need to worry about drift between projects because they're all in sync and generated automatically.</p>
<p>It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes.</p>
<p>If you want to see an example, <a href="https://www.youtube.com/watch?v=LkhsdmxReUc">watch this video</a> where I set up a new Drupal 10 project from nothing to running website in less than a minute.</p>
<p><a href="/build-configs">Build Configs</a> is a tool I wrote and recently <a href="/presentations/building-build-configs">gave a lightning talk about</a> at the PHP South West meetup in Bristol, UK.</p>
<p>It's a command-line tool that creates customised per-project configuration files from a set of reusable templates.</p>
<p>It's a Symfony project using components such as Console, Validator, and Twig for templating.</p>
<p>But why did I build it?</p>
<h2 id="what-was-i-doing-before%3F">What was I doing before?</h2>
<p>When starting a new project, I'd copy configuration files from an existing project and alter them as needed.</p>
<p>If a project uses a <code>docroot</code> directory instead of <code>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>
<h2 id="what-was-the-issue-with-this%3F">What was the issue with this?</h2>
<p>It took time to set up new projects, and there would be drift between them.</p>
<p>I may have added a feature to one project, but it wouldn't exist in the one I was working on.</p>
<p>If I needed to move a feature from one project to another, I needed to do it manually.</p>
<h2 id="how-does-build-configs-solve-the-issue%3F">How does Build Configs solve the issue?</h2>
<p>Now, I have a canonical set of template files.</p>
<p>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>
<p>I don't need to worry about drift between projects because they're all in sync and generated automatically.</p>
<p>It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes.</p>
<p>If you want to see an example, <a href="https://www.youtube.com/watch?v=LkhsdmxReUc">watch this video</a> where I set up a new Drupal 10 project from nothing to running website in less than a minute.</p>