113 lines
5.1 KiB
YAML
113 lines
5.1 KiB
YAML
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"
|
|
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: |
|
|
<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>
|
|
|
|
|
|
format: full_html
|
|
processed: |
|
|
<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>
|
|
|
|
|
|
summary: null
|
|
field_daily_email_cta: { }
|