revert: generate redirects in Astro

This reverts commit de7aa271f2.
This commit is contained in:
Oliver Davies 2023-10-04 07:38:12 +01:00
parent de4bcd29a0
commit 4ceabd72bb
3 changed files with 798 additions and 1391 deletions

View file

@ -1,9 +1,9 @@
import alpinejs from "@astrojs/alpinejs";
import mdx from "@astrojs/mdx";
import redirects from "./redirects.json";
import sitemap from "@astrojs/sitemap";
import tailwind from "@astrojs/tailwind";
import { defineConfig } from "astro/config"; import { defineConfig } from "astro/config";
import alpinejs from "@astrojs/alpinejs";
import tailwind from "@astrojs/tailwind";
import mdx from "@astrojs/mdx";
import sitemap from "@astrojs/sitemap";
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
@ -16,14 +16,13 @@ export default defineConfig({
// otherwise it will be a link to a redirect URL and not the content. // otherwise it will be a link to a redirect URL and not the content.
item.url = item.url.replace(/\/$/, ""); item.url = item.url.replace(/\/$/, "");
return item; return item;
}, }
}), }),
tailwind({ tailwind({
config: { config: {
applyBaseStyles: false, applyBaseStyles: false
}, }
}), }),
], ],
redirects, site: "https://www.oliverdavies.uk"
site: "https://www.oliverdavies.uk",
}); });

View file

@ -1,399 +0,0 @@
{
"/10-useful-drupal-6-modules-i-use-every-project": "/blog/10-useful-drupal-6-modules",
"/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery": "/blog/style-drupal-6s-taxonomy-lists-php-css-jquery",
"/2010/04/28/using-imagecache-and-imagecrop-for-my-portfolio": "/blog/using-imagecache-imagecrop-my-portfolio",
"/2010/05/29/importing-images-using-the-imagefieldimport-module": "/blog/quickly-import-multiples-images-using-imagefieldimport-module",
"/2010/06/23/creating-a-block-of-social-media-icons-using-cck-views-and-nodequeue": "/blog/create-block-social-media-icons-using-cck-views-nodequeue",
"/2010/07/05/thanks": "/blog/thanks",
"/2010/08/17/create-a-better-photo-gallery-in-drupal-part-2": "/blog/create-better-photo-gallery-drupal-part-2",
"/2014/05/21/git-format-patch": "/blog/git-format-patch-your-friend",
"/2PxmyqP": "/articles/examples-of-laravel-collections-in-drupal",
"/39CoG": "/articles/drupalcamp-london-testing-workshop",
"/3eGQr": "https://github.com/howToCodeWell/howToCodeWellFM/blob/c927e0b3589f1d7375002f7fd70f0bfc9fc90449/composer.json#L17",
"/6UhLN": "https://github.com/opdavies/sculpin-twig-markdown-bundle/pull/1",
"/6i3YZ": "https://www.youtube.com/watch?v=vUK5sEbd-dk",
"/9rv0Z": "https://www.drupal.org/project/override_node_options/issues/3109852",
"/BhMZi": "https://git.drupalcode.org/search?utf8=%E2%9C%93&snippets=&scope=&repository_ref=8.x-1.x&search=baz&project_id=23203",
"/NBi5h": "https://git.drupalcode.org/search?utf8=%E2%9C%93&search=bar&group_id=&project_id=23203&search_code=true&repository_ref=8.x-1.x&nav_source=navbar",
"/P5KQ5": "https://www.npmjs.com/package/tailwindcss-skip-link",
"/S8ZDA": "/articles/rebuilding-bartik-with-vuejs-tailwind-css-part-2",
"/Wh48P": "https://github.com/opdavies/oliverdavies.uk/blob/master/source/_partials/talk/video.html.twig",
"/XbzS2": "https://github.com/opdavies/gmail-filter-builder",
"/YK1VH": "/articles/psr4-autoloading-test-cases-drupal-7",
"/Yil": "https://drupalcamp.london/tickets/training",
"/about": "/",
"/about/cv": "/cv",
"/about/speaker-information": "/speaker-information",
"/acquia-certifications": "https://certification.acquia.com/registry?fname=Oliver&lname=Davies&city=&state=&country=United+Kingdom&org=&exam=All",
"/acquia-certified": "https://certification.acquia.com/?fname=Oliver&lname=Davies",
"/ansible": "https://galaxy.ansible.com/opdavies",
"/ansible-molecule": "/articles/test-driven-ansible-role-development-molecule",
"/ansistrano-code": "https://github.com/opdavies/dransible",
"/ansistrano-demo": "https://www.youtube.com/watch?v=PLS4ET7FAcU",
"/ansistrano-slides": "/talks/deploying-php-ansible-ansistrano",
"/archive/2022/10/20/run-vs-task-runner": "/archive/2022/10/19/run-vs-task-runners",
"/atNOQ": "https://youtu.be/r41dkD2EOo8",
"/automatically-updating-talk-created-date": "https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6",
"/blog.xml": "/rss.xml",
"/blog/10-useful-drupal-6-modules": "/blog/useful-drupal-6-modules",
"/blog/10-years-working-full-time-drupal": "/blog/10-years-working-full-time-drupal-php",
"/blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery": "/blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery",
"/blog/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery": "/blog/style-drupal-6s-taxonomy-lists-php-css-jquery",
"/blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio": "/blog/using-imagecache-and-imagecrop-my-portfolio",
"/blog/2010/05/06/conditional-email-addresses-webform": "/blog/conditional-email-addresses-webform",
"/blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile": "/blog/quickly-create-zen-subthemes-using-zenophile",
"/blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide": "/blog/create-slideshow-multiple-images-using-fancy-slide",
"/blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module": "/blog/quickly-import-multiples-images-using-imagefieldimport-module",
"/blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi": "/blog/improve-jpg-quality-imagecache-and-imageapi",
"/blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue": "/blog/create-block-social-media-icons-using-cck-views-and-nodequeue",
"/blog/2010/06/25/10-useful-drupal-6-modules": "/blog/10-useful-drupal-6-modules",
"/blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views": "/blog/create-flickr-photo-gallery-using-feeds-cck-and-views",
"/blog/2010/07/01/change-content-type-multiple-nodes-using-sql": "/blog/change-content-type-multiple-nodes-using-sql",
"/blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx": "/blog/create-virtual-hosts-mac-os-x-using-virtualhostx",
"/blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql": "/blog/add-taxonomy-term-multiple-nodes-using-sql",
"/blog/2010/07/07/quickly-adding-taxonomy-term-multiple-nodes-using-sql": "/blog/add-taxonomy-term-multiple-nodes-using-sql",
"/blog/2010/07/12/overview-teleport-module": "/blog/review-teleport-module",
"/blog/2010/07/12/review-teleport-module": "/blog/review-teleport-module",
"/blog/2010/08/10/review-adminhover-module": "/blog/review-adminhover-module",
"/blog/2010/08/11/create-better-photo-gallery-drupal-part-1": "/blog/create-better-photo-gallery-drupal-part-1",
"/blog/2010/08/11/how-create-better-photo-gallery-drupal-part-1": "/blog/create-better-photo-gallery-drupal-part-1",
"/blog/2010/08/17/create-better-photo-gallery-drupal-part-2": "/blog/create-better-photo-gallery-drupal-part-2",
"/blog/2010/08/20/review-image-caption-module": "/blog/review-image-caption-module",
"/blog/2010/09/26/south-wales-drupal-user-group": "/blog/south-wales-drupal-user-group",
"/blog/2010/10/10/create-and-apply-patches": "/blog/create-and-apply-patches",
"/blog/2010/10/13/create-better-photo-gallery-drupal-part-3": "/blog/create-better-photo-gallery-drupal-part-3",
"/blog/2010/10/22/create-better-photo-gallery-drupal-part-21": "/blog/create-better-photo-gallery-drupal-part-21",
"/blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate": "/blog/use-regular-expressions-search-and-replace-coda-or-textmate",
"/blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website": "/blog/easily-embed-typekit-fonts-your-drupal-website",
"/blog/2011/03/15/display-number-facebook-fans-php": "/blog/display-number-facebook-fans-php",
"/blog/2011/03/31/proctor-stevenson": "/blog/proctor-stevenson",
"/blog/2011/05/20/proctors-hosting-next-drupal-meetup": "/blog/proctors-hosting-next-drupal-meetup",
"/blog/2011/05/23/imagefield-import-archive": "/blog/imagefield-import-archive",
"/blog/2011/08/28/create-multigroups-drupal-7-using-field-collections": "/blog/create-multigroups-drupal-7-using-field-collections",
"/blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu": "/blog/install-and-configure-subversion-svn-server-ubuntu",
"/blog/2011/10/install-and-configure-subversion-svn-server-ubuntu": "/blog/how-install-configure-subversion-svn-server-ubuntu",
"/blog/2012/01/04/site-upgraded-drupal-7": "/blog/site-upgraded-drupal-7",
"/blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection": "/blog/use-authorized-keys-create-passwordless-ssh-connection",
"/blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush": "/blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush",
"/blog/2012/04/17/installing-nagios-centos": "/blog/installing-nagios-centos",
"/blog/2012/04/19/adding-custom-theme-templates-drupal-7": "/blog/adding-custom-theme-templates-drupal-7",
"/blog/2012/04/adding-custom-theme-templates-drupal-7": "/blog/adding-custom-theme-templates-drupal-7",
"/blog/2012/05/23/add-date-popup-calendar-custom-form": "/blog/add-date-popup-calendar-custom-form",
"/blog/2012/05/23/checkout-specific-revision-svn-command-line": "/blog/checkout-specific-revision-svn-command-line",
"/blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess": "/blog/forward-one-domain-another-using-mod-rewrite-and-htaccess",
"/blog/2012/05/23/forward-one-domain-another-using-modrewrite-and-htaccess": "/blog/forward-one-domain-another-using-modrewrite-htaccess",
"/blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser": "/blog/prevent-apache-displaying-text-files-within-web-browser",
"/blog/2012/05/23/writing-info-file-drupal-7-theme": "/blog/writing-info-file-drupal-7-theme",
"/blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files": "/blog/dividing-drupals-process-and-preprocess-functions-separate-files",
"/blog/2012/05/forward-one-domain-another-using-modrewrite-and-htaccess": "/blog/forward-one-domain-another-using-modrewrite-htaccess",
"/blog/2012/07/12/my-new-drupal-modules": "/blog/my-new-drupal-modules",
"/blog/2012/07/14/install-nomensa-media-player-drupal": "/blog/install-nomensa-media-player-drupal",
"/blog/2012/07/27/writing-article-linux-journal": "/blog/writing-article-linux-journal",
"/blog/2012/07/install-and-configure-nomensa-accessible-media-player-drupal": "/blog/install-configure-nomensa-accessible-media-player-drupal",
"/blog/2012/07/nomensa-accessible-media-player-drupal": "/blog/install-configure-nomensa-accessible-media-player-drupal",
"/blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file": "/blog/display-custom-menu-drupal-7-theme-template-file",
"/blog/2012/09/06/reflections-speaking-unifieddiff": "/blog/reflections-speaking-unifieddiff",
"/blog/2012/10/25/my-sublime-text-2-settings": "/blog/my-sublime-text-2-settings",
"/blog/2012/11/15/accessible-bristol-site-launched": "/blog/accessible-bristol-site-launched",
"/blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line": "/blog/open-sublime-text-2-mac-os-x-command-line",
"/blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy": "/blog/use-sass-and-compass-drupal-7-using-sassy",
"/blog/2012/12/use-sass-and-compass-drupal-7-using-sassy": "/blog/use-sass-and-compass-drupal-7-using-sassy",
"/blog/2013/01/09/checking-if-user-logged-drupal-right-way": "/blog/checking-if-user-logged-drupal-right-way",
"/blog/2013/02/16/creating-and-using-custom-tokens-drupal-7": "/blog/creating-and-using-custom-tokens-drupal-7",
"/blog/2013/02/creating-and-using-custom-tokens-drupal-7": "/blog/creating-using-custom-tokens-drupal-7",
"/blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu": "/blog/quickest-way-install-sublime-text-2-ubuntu",
"/blog/2013/04/20/leaving-nomensa-joining-precedent": "/blog/leaving-nomensa-joining-precedent",
"/blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt": "/blog/display-git-branch-or-tag-names-your-bash-prompt",
"/blog/2013/04/display-git-branch-or-tag-names-your-bash-prompt": "/blog/display-git-branch-or-tag-names-your-bash-prompt",
"/blog/2013/06/13/some-useful-links-using-simpletest-drupal": "/blog/some-useful-links-using-simpletest-drupal",
"/blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled": "/blog/creating-local-and-staging-sites-drupals-domain-module-enabled",
"/blog/2013/07/26/going-drupalcon": "/blog/going-drupalcon",
"/blog/2013/09/06/create-a-zen-sub-theme-using-drush": "/blog/create-a-zen-sub-theme-using-drush",
"/blog/2013/09/create-zen-sub-theme-using-drush": "/blog/create-zen-sub-theme-using-drush",
"/blog/2013/11/19/dont-bootstrap-drupal-use-drush": "/blog/dont-bootstrap-drupal-use-drush",
"/blog/2013/11/27/useful-vagrant-commands": "/blog/useful-vagrant-commands",
"/blog/2013/11/dont-bootstrap-drupal-use-drush": "/blog/dont-bootstrap-drupal-use-drush",
"/blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget": "/blog/quickly-apply-patches-using-git-and-curl-or-wget",
"/blog/2013/12/31/download-different-versions-drupal-drush": "/blog/download-different-versions-drupal-drush",
"/blog/2013/12/quickly-apply-patches-using-git-and-curl-or-w": "/blog/quickly-apply-patches-using-git-curl-or-wget",
"/blog/2014/01/15/some-useful-git-aliases": "/blog/some-useful-git-aliases",
"/blog/2014/02/09/drupalcamp-london-2014": "/blog/drupalcamp-london-2014",
"/blog/2014/03/03/what-git-flow": "/blog/what-git-flow",
"/blog/2014/05/03/drupal-association": "/blog/drupal-association",
"/blog/2014/05/06/thanks": "/blog/thanks",
"/blog/2014/05/21/git-format-patch": "/blog/git-format-patch",
"/blog/2014/07/02/drush-make-drupalbristol": "/blog/drush-make-drupalbristol",
"/blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine": "/blog/fix-vagrant-loading-wrong-virtual-machine",
"/blog/2014/10/21/updating-features-and-adding-components-using-drush": "/blog/updating-features-and-adding-components-using-drush",
"/blog/2014/11/18/include-css-fonts-using-sass-each-loop": "/blog/include-css-fonts-using-sass-each-loop",
"/blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module": "/blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module",
"/blog/2014/11/27/pantheon-settings-files": "/blog/pantheon-settings-files",
"/blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides": "/blog/include-local-drupal-settings-file-environment-configuration-and-overrides",
"/blog/2015/04/03/how-to-define-a-minimum-drupal-core-version": "/blog/how-to-define-a-minimum-drupal-core-version",
"/blog/2015/06/18/updating-forked-repositories-on-github": "/blog/updating-forked-repositories-on-github",
"/blog/2015/07/19/sculpin-twig-resources": "/blog/sculpin-twig-resources",
"/blog/2015/07/21/automating-sculpin-jenkins": "/blog/automating-sculpin-jenkins",
"/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7": "/blog/programmatically-load-an-entityform-in-drupal-7",
"/blog/2016/02/15/announcing-the-drupal-vm-generator": "/blog/announcing-the-drupal-vm-generator",
"/blog/2016/05/03/simplifying-drupal-migrations-with-xautoload": "/blog/simplifying-drupal-migrations-with-xautoload",
"/blog/2016/07/15/building-gmail-filters-with-php": "/blog/building-gmail-filters-with-php",
"/blog/2016/12/30/drupal-vm-generator-291-released": "/blog/drupal-vm-generator-291-released",
"/blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts": "/blog/easier-sculpin-commands-with-composer-and-npm-scripts",
"/blog/2017/01/31/nginx-redirects-with-query-string-arguments": "/blog/nginx-redirects-with-query-string-arguments",
"/blog/2017/05/05/fixing-drupal-simpletest-docker": "/blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers",
"/blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers": "/blog/fixing-drupal-simpletest-issues-inside-docker-containers",
"/blog/2017/05/20/turning-drupal-module-into-feature": "/blog/turning-your-custom-drupal-module-feature",
"/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot": "/blog/introducing-the-drupal-meetups-twitterbot",
"/blog/2017/07/13/publishing-sculpin-sites-with-github-pages": "/blog/publishing-sculpin-sites-github-pages",
"/blog/2017/11/07/tdd-test-driven-drupal": "/blog/tdd-test-driven-drupal",
"/blog/2017/11/07/writing-drupal-module-test-driven-development-tdd": "/blog/2017/11/07/tdd-test-driven-drupal",
"/blog/2018/01/30/drupalcamp-bristol-2018": "/blog/drupalcamp-bristol-2018",
"/blog/2018/02/05/using-tailwind-css-in-your-drupal-theme": "/blog/using-tailwind-css-in-your-drupal-theme",
"/blog/2018/02/27/looking-forward-to-drupalcamp-london": "/blog/looking-forward-to-drupalcamp-london",
"/blog/2018/02/27/queuing-private-messages-in-drupal-8": "/blog/queuing-private-messages-in-drupal-8",
"/blog/2018/02/28/building-the-new-phpsw-website": "/blog/building-the-new-phpsw-website",
"/blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back": "/blog/yay-the-mediacurrent-contrib-half-hour-is-back",
"/blog/2018/03/04/tweets-from-drupalcamp-london": "/blog/tweets-from-drupalcamp-london",
"/blog/2018/04/23/back-to-the-future-git-diff-apply": "/blog/back-future-gits-diff-apply-commands",
"/blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal": "/blog/creating-a-custom-phpunit-command-for-docksal",
"/blog/add-date-popup-calendar-custom-form": "/blog/how-add-date-popup-calendar-custom-form",
"/blog/adding-methods-decorating-entity-metadata-wrapper": "/blog/decorating-entity-metadata-wrapper-add-refactor-methods",
"/blog/announcing-drupal-vm-generator": "/blog/announcing-the-drupal-vm-generator",
"/blog/announcing-the-drupal-vm-config-generator": "/blog/announcing-the-drupal-vm-generator",
"/blog/back-to-the-future-git-diff-apply": "/blog/back-future-gits-diff-apply-commands",
"/blog/building-gmail-filters-in-php": "/blog/building-gmail-filters-php",
"/blog/building-new-phpsw-website": "/blog/building-the-new-phpsw-website",
"/blog/building-presentation-slides-reveal-js-tailwind-css": "/blog/building-presentation-slides-rst2pdf",
"/blog/building-speaker-leaderboard-php-south-wales-using-drupal-symfony": "/blog/building-speaker-leaderboard-php-south-wales-drupal-symfony",
"/blog/create-and-apply-patches": "/blog/how-create-apply-patches",
"/blog/create-flickr-photo-gallery-using-feeds-cck-and-views": "/blog/create-flickr-photo-gallery-using-feeds-cck-views",
"/blog/creating-and-using-custom-tokens-drupal-7": "/blog/creating-using-custom-tokens-drupal-7",
"/blog/creating-custom-docksal-commands": "/blog/creating-custom-phpunit-command-docksal",
"/blog/debugging-drupal-commerce-promotions-illiminate-collections": "/blog/debugging-drupal-commerce-illuminate-collections",
"/blog/decorating-entity-metadata-wrapper-add-add-refactor-methods": "/blog/decorating-entity-metadata-wrapper-add-refactor-methods",
"/blog/dev-book-club-refactoring-chapter-1": "/blog/dev-book-club-notes-refactoring-chapter-1",
"/blog/dividing-drupals-process-preprocess-functions-separate-files": "/blog/dividing-drupals-process-and-preprocess-functions-separate-files",
"/blog/drupal-8-commerce-fixing-no-such-customer-error-(on-)?checkout": "/blog/drupal-8-commerce-fixing-no-such-customer-error-checkout",
"/blog/drupal-vm-generator-291-released": "/blog/drupal-vm-generator-updates",
"/blog/drupalcamp-london-2019-tickets": "/blog/drupalcamp-london-2019-tickets-available-call-sessions",
"/blog/drush-make-drupalbristol": "/talks/drush-make-drupalbristol",
"/blog/easier-git-repository-cloning-with-insteadof": "/blog/easier-git-repository-cloning-insteadof",
"/blog/easier-sculpin-commands-with-composer-and-npm-scripts": "/blog/easier-sculpin-commands-composer-npm-scripts",
"/blog/editing-meetup-videos-kdenlive": "/blog/editing-meetup-videos-linux-kdenlive",
"/blog/examples-of-laravel-collections-in-drupal": "/blog/using-laravel-collections-drupal",
"/blog/experimenting-with-events-in-drupal-8": "/blog/experimenting-events-drupal-8",
"/blog/fix-vagrant-loading-wrong-virtual-machine": "/blog/how-fix-vagrant-loading-wrong-virtual-machine",
"/blog/fixing-drupal-simpletest-docker": "/blog/fixing-drupal-simpletest-issues-inside-docker-containers",
"/blog/forward-one-domain-another-using-modrewrite-and-htaccess": "/blog/forward-one-domain-another-using-modrewrite-htaccess",
"/blog/forward-one-domain-another-using-modrewrite-and-htaccess": "/blog/forward-one-domain-another-using-modrewrite-htaccess",
"/blog/git-format-patch": "/blog/git-format-patch-your-friend",
"/blog/how-easily-embed-typekit-fonts-your-drupal-website": "/blog/easily-embed-typekit-fonts-your-drupal-website",
"/blog/how-split-new-drupal-contrib-project-within-another-repository": "/blog/splitting-new-drupal-project-from-repo",
"/blog/how-style-drupal-6s-taxonomy-lists-php-css-and-jquery": "/blog/style-drupal-6s-taxonomy-lists-php-css-jquery",
"/blog/include-local-drupal-settings-file-environment-configuration-overrides": "/blog/include-local-drupal-settings-file-environment-configuration-and-overrides",
"/blog/install-and-configure-subversion-svn-server-ubuntu": "/blog/how-install-configure-subversion-svn-server-ubuntu",
"/blog/live-blogging-symfonylive-london": "/blog/live-blogging-symfonylive-london-2019",
"/blog/minimum-core-version": "/blog/how-define-minimum-drupal-core-version",
"/blog/nginx-redirects-with-query-string-arguments": "/blog/nginx-redirects-query-string-arguments",
"/blog/null-users-and-system-users-in-drupal": "/blog/null-users-system-users-drupal",
"/blog/overridding-phpcs-configuration-drupal-ci": "/blog/overriding-phpcs-configuration-drupal-ci",
"/blog/pantheon-settings-files": "/blog/include-environment-specific-settings-files-pantheon",
"/blog/pdfpc-pdf-presenter-console-notes": "/blog/presenting-pdf-slides-using-pdfpc-pdf-presenter-console",
"/blog/php-apps-subdirectory-nginx": "/blog/how-put-your-php-application-subdirectory-another-site-nginx",
"/blog/presenting-tailwind-css-ansible-cms-philly": "/blog/presenting-on-tailwind-css-and-ansible-at-cms-philly",
"/blog/programmatically-load-(an-)?entityform-(in-)?drupal-7": "/blog/entityform",
"/blog/published-my-first-docker-images-docker-hub": "/blog/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf",
"/blog/publishing-sculpin-sites-(with-)?github-pages": "/blog/publishing-sculpin-sites-github-pages",
"/blog/queuing-private-messages-in-drupal-8": "/blog/queuing-private-messages-drupal-8",
"/blog/quick-project-switching-in-phpstorm": "/blog/quick-project-switching-phpstorm",
"/blog/quickly-apply-patches-using-git-and-curl-or-wget": "/blog/quickly-apply-patches-using-git-curl-or-wget",
"/blog/rebuilding-bartik-with-vuejs-tailwind-css": "/blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css",
"/blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2": "/blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2",
"/blog/rebuilding-uis-tailwind-css": "/blog/uis-ive-rebuilt-tailwind-css",
"/blog/restructuring-my-tailwindjs-config-files": "/blog/restructuring-my-tailwindjs-configuration-files",
"/blog/retrieving-profile-data-user-using-entity-metadata-wrapper": "/blog/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper",
"/blog/running-drupal-with-symfony-local-server": "/blog/running-drupal-88-symfony-local-server",
"/blog/running-phpunit-tests-docksal-phpstorm": "/blog/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm",
"/blog/simplifying-drupal-migrations-with-xautoload": "/blog/simplifying-drupal-migrations-xautoload",
"/blog/speaking-drupalcon-barcelona-2020": "/blog/speaking-drupalcon-europe-2020",
"/blog/speaking-during-lockdown": "/blog/speaking-remotely-during-covid-19",
"/blog/speaking-remotely-during-lockdown": "/blog/speaking-remotely-during-covid-19",
"/blog/style-drupal-6s-taxonomy-lists-php-css-jquery": "/blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery",
"/blog/survey-results-my-drupalcon-europe-session": "/blog/survey-results-my-drupalcon-europe-session-test-driven-drupal",
"/blog/system-users-null-users": "/blog/null-users-and-system-users-in-drupal",
"/blog/test-driven-drupal-gitstore-leanpub": "/blog/test-driven-drupal-on-gitstore-leanpub",
"/blog/test-driven-drupal-presentation-drupalcon-europe-0": "/blog/test-driven-drupal-presentation-drupalcon-europe",
"/blog/test-driven-drupal-session-drupalcon-europe": "/blog/test-driven-drupal-presentation-drupalcon-europe",
"/blog/test-driven-drupal-session-video-drupalcon-europe": "/blog/test-driven-drupal-presentation-drupalcon-europe",
"/blog/testing-tailwind-css-plugins-with-jest": "/blog/testing-tailwind-css-plugins-jest",
"/blog/testing-tailwindcss-plugins-with-jest": "/blog/testing-tailwind-css-plugins-jest",
"/blog/tweets-from-drupalcamp-london": "/blog/tweets-drupalcamp-london",
"/blog/updating-features-and-adding-components-using-drush": "/blog/updating-features-adding-components-using-drush",
"/blog/updating-forked-repositories-github": "/blog/updating-forked-github-repos",
"/blog/use-regular-expressions-search-and-replace-coda-or-textmate": "/blog/use-regular-expressions-search-replace-coda-or-textmate",
"/blog/using-environment-variables-settings-docksal": "/blog/how-use-environment-variables-your-drupal-settings-docksal",
"/blog/using-psr-4-autoloading-your-drupal-7-test-cases": "/blog/psr4-autoloading-test-cases-drupal-7",
"/blog/using-tailwind-css-in-your-drupal-theme": "/blog/using-tailwind-css-your-drupal-theme",
"/blog/using-the-pcss-extension-postcss-webpack-encore": "/blog/using-pcss-extension-postcss-webpack-encore",
"/blog/weeknotes-june-5th": "/blog/weeknotes-2021-06-05",
"/blog/writing-drupal-module-test-driven-development-tdd": "/blog/writing-new-drupal-8-module-using-test-driven-development-tdd",
"/book": "/test-driven-drupal",
"/calendars?": "https://savvycal.com/opdavies",
"/cms-philly": "/articles/presenting-on-tailwind-css-and-ansible-at-cms-philly",
"/code-enigma-interview": "https://blog.codeenigma.com/interview-with-a-drupal-expert-9fcd8e0fad28",
"/contrib-half-hour": "https://www.youtube.com/playlist?list=PLu-MxhbnjI9rHroPvZO5LEUhr58Yl0j_F",
"/d0P5z": "/talks/drupal-8-php-libraries-drupalorg-api",
"/d7": "/drupal7",
"/dcbristol-cfp": "https://www.papercall.io/drupalcamp-bristol-2019",
"/dcbristol17-videos": "https://www.youtube.com/playlist?list=PLOwPvExSyLLngtd6R4PUD9MCXa6QL_obA",
"/dcbristol19-announced": "/articles/drupalcamp-bristol-2019-speakers-sessions-announced",
"/dclondon-sat": "https://drupalcamp.london/schedule/saturday",
"/dclondon-sun": "https://drupalcamp.london/schedule/sunday",
"/dclondon20": "/articles/drupalcamp-london-testing-workshop",
"/ddev-phpunit-command": "/blog/creating-custom-phpunit-command-ddev",
"/deploying-php-ansible": "/talks/deploying-php-ansible-ansistrano",
"/dks7E": "https://www.youtube.com/watch?v=PLS4ET7FAcU",
"/do-library": "https://github.com/opdavies/drupalorg-api-php",
"/do-projects": "https://github.com/opdavies/drupal-module-drupalorg-projects",
"/docksal-phpunit-phpstorm": "/articles/running-phpunit-tests-docksal-phpstorm",
"/docksal-posts": "/articles/tags/docksal",
"/dransible": "https://github.com/opdavies/dransible",
"/dransible-drupal-9": "/blog/upgrading-dransible-project-drupal-9",
"/drupal-bristol-march-19": "https://docs.google.com/presentation/d/1pk9LIN-hHX73kvDdo-lzgmKlAeH33_K_uvI0t7A-rvY/edit?usp=sharing",
"/drupal-consultant": "/drupal-consulting",
"/drupal-consulting": "/",
"/drupal-core-live-stream": "https://www.youtube.com/watch?v=OK4FWwh1gQU",
"/drupal-core-testing-gate": "https://www.drupal.org/core/gates#testing",
"/drupal-first-time-issues": "https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice",
"/drupal-forum-post": "http://www.webmaster-forums.net/webmasters-corner/developing-my-website-using-php-and-mysql#comment-1231537",
"/drupal-marketplace-uk": "https://www.drupal.org/drupal-services?offices%5B%5D=24460",
"/drupal-meetups-twitterbot": "/articles/introducing-the-drupal-meetups-twitterbot",
"/drupal-novice-issues": "https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice",
"/drupal-php-developer": "/drupal-consultant",
"/drupal-php-developer-consultant-uk": "/drupal-php-developer",
"/drupal-tailwind-demo": "https://www.youtube.com/watch?v=1eM-Gw6GI4g",
"/drupal-tailwindcss": "https://www.drupal.org/project/tailwindcss",
"/drupal-vuejs": "/talks/decoupling-drupal-vuejs/",
"/drupal7": "/drupal-upgrade",
"/drupalcamp-london-2019-tickets": "/articles/drupalcamp-london-2019-tickets",
"/drupalcamp-nyc-training": "https://www.youtube.com/watch?v=3M9c4UUzKm0",
"/drupalorg": "https://www.drupal.org/u/opdavies",
"/drupalorg-project-issues": "https://www.drupal.org/project/issues/search?projects=Override+Node+Options%2C+Tailwind+CSS+Starter+Kit%2C+Block+ARIA+Landmark+Roles%2C+Copyright+Block+module%2C+System+User%2C+Null+User%2C+Collection+class%2C+Pathauto+Menu+Link%2C+Webform+ARIA&project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&issue_tags_op=%3D",
"/drupalversary": "https://github.com/opdavies/drupal-module-drupalversary",
"/elewant": "https://elewant.com/shepherd/admire/opdavies",
"/feed": "/rss.xml",
"/first-drupal-core-issue": "https://www.drupal.org/project/drupal/issues/753898",
"/first-npm-package": "https://www.npmjs.com/package/tailwindcss-vuejs",
"/freeagent": "https://opdavies.freeagent.com",
"/git-flow": "/talks/git-flow",
"/gitlab": "https://gitlab.com/opdavies",
"/gitstore": "https://enjoy.gitstore.app/maintainers/opdavies",
"/gmail-filters": "https://gitlab.com/opdavies/gmail-filters",
"/images/me-precedent.jpg": "/sites/default/files/images/social-avatar.jpg",
"/inviqa-tailwind-demo": "https://play.tailwindcss.com/Yfmw8O5UNN",
"/inviqa-tailwind-notes": "https://gist.github.com/opdavies/e6f0f4938506a6859acf1aca8b4e1a74",
"/join-php-south-wales-slack": "https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA",
"/jy6rW": "https://www.meetup.com/PHP-South-Wales/events/264731393",
"/kB6Jd": "/articles/running-drupal-with-symfony-local-server/",
"/kmDRA": "https://www.bbc.co.uk/news/uk-46561779",
"/leeds-php-drupal-9": "https://www.meetup.com/leedsphp/events/272504993",
"/live": "https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ",
"/npm": "https://www.npmjs.com/~opdavies",
"/oFlkS": "/articles/test-driven-drupal-on-gitstore-leanpub",
"/oliver-davies-uk-based-drupal-symfony-developer": "/oliver-davies-uk-based-drupal-php-developer",
"/pair-programming": "/pair",
"/pair-with-me": "/pair",
"/pairing": "/pair",
"/php-ansible": "/talks/deploying-php-ansible-ansistrano",
"/qSHAl": "/articles/published-my-first-npm-package/",
"/qT1Rb": "https://github.com/opdavies/drupal-meetups-twitterbot",
"/rebuilding-acquia": "https://rebuilding-acquia.oliverdavies.uk",
"/rebuilding-bartik": "/articles/rebuilding-bartik-with-vuejs-tailwind-css",
"/rebuilding-bristol-js": "https://github.com/opdavies/rebuilding-bristol-js",
"/rebuilding-pantheon": "https://play.tailwindcss.com/LND98XihGI?layout=horizontal",
"/rebuilding-platformsh": "https://rebuilding-platformsh.oliverdavies.uk",
"/rebuilding-symfony": "https://github.com/opdavies/rebuilding-symfony",
"/rk29B": "https://www.meetup.com/PHP-South-Wales/events/268422525",
"/rss": "/rss.xml",
"/s9MjJ": "https://symfonycasts.com/screencast/symfony",
"/sculpin-encore-versioning": "https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2",
"/sites/default/files/images/social-avatar.": "/images/social-avatar.jpg",
"/skills": "https://opdavies-skills-tailwindcss.netlify.com/",
"/slides-drupal-9": "https://slides-upgrading-to-drupal-9.oliverdavies.uk",
"/slides-upgrading-to-drupal-9": "https://slides-upgrading-to-drupal-9.oliverdavies.uk",
"/slides-upgrading-to-drupal-9/index.html": "https://slides-upgrading-to-drupal-9.oliverdavies.uk",
"/slides-working-with-workspace": "https://slides-working-with-workspace.oliverdavies.uk",
"/speaker-info": "/about/speaker-information",
"/speaking-videos": "https://www.youtube.com/playlist?list=PLHn41Ay7w7kfAzczswrANch5oHAPZBlvu",
"/stream": "https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ/live",
"/swap-markdown-parser": "https://github.com/opdavies/sculpin-twig-markdown-bundle-example/tree/swap-markdown-parser",
"/symfony": "https://connect.symfony.com/profile/opdavies",
"/symfony-server": "/articles/running-drupal-with-symfony-local-server",
"/symfonylive": "/articles/live-blogging-symfonylive-london",
"/symposium": "https://symposiumapp.com/u/opdavies",
"/tailwind-css-talk": "/talks/taking-flight-tailwind-css",
"/tailwind-repos": "https://github.com/opdavies?utf8=%E2%9C%93&tab=repositories&q=tailwindcss",
"/tailwind-talk": "/talks/taking-flight-with-tailwind-css",
"/tailwindcss-demo": "http://tailwindcss-demo.oliverdavies.uk/",
"/talks-offer-tweet": "https://twitter.com/opdavies/status/1250870367712935938",
"/talks/2012/09/05/what-is-this-drupal-thing-unified-diff": "/talks/what-is-this-drupal-thing",
"/talks/2013/07/10/drupal-ldap-swdug": "/talks/drupal-ldap",
"/talks/2014/03/01/git-flow-drupalcamp-london-2014": "/talks/git-flow",
"/talks/2014/07/02/drush-make-drupalbristol-drupal-bristol": "/talks/drush-make-drupalbristol",
"/talks/2014/08/19/drupal-association-swdug": "/talks/drupal-association",
"/talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015": "/talks/drupalorg-in-2015-whats-coming-next",
"/talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015": "/talks/drupalorg-in-2015-whats-coming-next",
"/talks/2015/04/08/drupal-8-phpsw": "/talks/drupal-8",
"/talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015": "/talks/test-drive-twig-with-sculpin",
"/talks/2015/08/25/dancing-for-drupal-umbristol": "/talks/dancing-for-drupal",
"/talks/2015/10/14/sculpin-phpsw": "/talks/sculpin",
"/talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016": "/talks/getting-started-with-drupal-8-module-development",
"/talks/2016/03/09/drupal-vm-generator-nwdug": "/talks/drupal-vm-generator",
"/talks/2016/04/02/drupal-vm-generator-drupal-bristol": "/talks/drupal-vm-generator",
"/talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016": "/talks/drupal-8-rejoining-the-herd",
"/talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016": "/talks/drupal-vm-meet-symfony-console",
"/talks/2016/11/09/drupal-development-with-composer-phpsw": "/talks/drupal-development-with-composer",
"/talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol": "/talks/goodbye-drush-make-hello-composer",
"/talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol": "/talks/getting-your-data-into-drupal-8",
"/talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017": "/talks/getting-your-data-into-drupal-8",
"/talks/ansible-ansistrano": "https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano",
"/talks/archive": "/talks",
"/talks/deploying-php-applications-fabric": "/talks/deploying-php-fabric",
"/talks/deploying-php-applications-with-fabric": "/talks/deploying-php-fabric",
"/talks/drupal-vm-generator-2": "/talks/drupal-vm-generator",
"/talks/drupalorg-2015-2": "/talks/drupalorg-2015",
"/talks/drupalorg-in-2015-whats-coming-next": "/talks/drupalorg-2015",
"/talks/getting-started-with-drupal-8-module-development": "/drupal-8-module-development",
"/talks/having-fun-drupal-8-php-libraries-drupalorg-api": "/talks/drupal-8-php-libraries-drupalorg-api",
"/talks/never-commit-master-introduction-git-flow": "/talks/git-flow",
"/talks/sculpin": "/talks/building-static-websites-sculpin",
"/talks/tailwind": "/talks/taking-flight-with-tailwind-css/",
"/talks/taking-flight-tailwind-css": "/talks/taking-flight-with-tailwind-css",
"/talks/using-laravel-collections-outside-laravel": "/talks/using-illuminate-collections-outside-laravel",
"/talks/working-workspace": "/talks/working-with-workspace",
"/tdd-blog": "https://github.com/opdavies/drupal-module-tdd-blog",
"/tdd-test-driven-drupal": "/talks/tdd-test-driven-drupal/",
"/test-driven-drupal-book": "/test-driven-drupal",
"/testing-drupal": "https://www.oliverdavies.uk/talks/tdd-test-driven-drupal",
"/testing-drupal-intro": "https://inviqa.com/blog/drupal-automated-testing-introduction",
"/testing-tailwind-plugins": "/articles/testing-tailwindcss-plugins-with-jest",
"/testing-workshop": "https://github.com/opdavies/workshop-drupal-automated-testing",
"/testing-workshop-code": "https://github.com/opdavies/workshop-drupal-automated-testing-code",
"/todoist-filters": "https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2",
"/twitter-tweaks": "https://github.com/opdavies/chrome-extension-twitter-tweaks",
"/upgrading-to-drupal-9": "/talks/upgrading-your-site-drupal-9",
"/uxbjV": "https://www.drupal.org/project/copyright_block",
"/vyTEF": "https://www.npmjs.com/package/tailwindcss-vuejs",
"/webpack-encore-pcss-regex": "https://regexr.com/51iaf",
"/wordcamp-bristol-tailwindcss": "https://2019.bristol.wordcamp.org/session/taking-flight-with-tailwind-css",
"/wordpress-tailwind": "https://github.com/opdavies/wordcamp-bristol-2019",
"/work": "/drupal-php-developer",
"/working-with-workspace": "/talks/working-with-workspace",
"/workshop-drupal-testing": "https://github.com/opdavies/workshop-drupal-automated-testing",
"/workspace-demo": "https://github.com/opdavies/working-with-workspace-demo",
"/wp-tailwind": "https://wp-tailwind.oliverdavies.uk",
"/wp-tailwind-repo": "https://github.com/opdavies/wordcamp-bristol-2019",
"/wp-tailwind-starter": "https://github.com/opdavies/wordpress-tailwindcss-startker-kit",
"/wp-tailwind-static": "https://wp-tailwind.oliverdavies.uk",
"/yXhoS": "/talks/things-you-should-know-about-php"
}

1771
yarn.lock

File diff suppressed because it is too large Load diff