From f5682a8d51bc5acf01c50199b4b2c455a2579450 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sat, 25 Nov 2023 20:32:50 +0000 Subject: [PATCH] docs(daily-email): add 2023-11-21 Why I built "Build Configs" --- src/content/daily-email/2023-11-21.md | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/content/daily-email/2023-11-21.md diff --git a/src/content/daily-email/2023-11-21.md b/src/content/daily-email/2023-11-21.md new file mode 100644 index 00000000..f63103ca --- /dev/null +++ b/src/content/daily-email/2023-11-21.md @@ -0,0 +1,52 @@ +--- +title: > + Why I built "Build Configs" +pubDate: 2023-11-21 +permalink: > + archive/2023/11/21/why-i-built-build-configs +tags: + - docker + - docker-compose + - php + - phpc + - drupal + - symfony +--- + +[Build Configs] is a tool I wrote and recently [gave a lightning talk about][talk] at the PHP South West meetup in Bristol, UK. + +It's a command-line tool that creates customised per-project configuration files from a set of reusable templates. + +It's a Symfony project using components such as Console, Validator, and Twig for templating. + +But why did I build it? + +## What was I doing before? + +When starting a new project, I'd copy configuration files from an existing project and alter them as needed. + +If a project uses a `docroot` directory instead of `web`, 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. + +## What was the issue with this? + +It took time to set up new projects, and there would be drift between them. + +I may have added a feature to one project, but it wouldn't exist in the one I was working on. + +If I needed to move a feature from one project to another, I needed to do it manually. + +## How does Build Configs solve the issue? + +Now, I have a canonical set of template files. + +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. + +I don't need to worry about drift between projects because they're all in sync and generated automatically. + +It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes. + +If you want to see an example, [watch this video][video] where I set up a new Drupal 10 project from nothing to running website in less than a minute. + +[build configs]: https://www.oliverdavies.uk/build-configs +[talk]: https://www.oliverdavies.uk/talks/building-build-configs +[video]: https://www.youtube.com/watch?v=LkhsdmxReUc