Skip to content

thibaudcolas/detect-wagtail

Repository files navigation

Detect whether a site or page is built with Wagtail.

Usage

You can run the detection with:

npm package

const { detectWagtail, renditions } = require('detect-wagtail');

// Example HTML string that may contain Wagtail image renditions
const htmlContent = `<div><img src="/media/images/example.fill-300.jpg"></div>`;

// Use the default strict pattern to check for Wagtail markup
if (detectWagtail(htmlContent)) {
  console.log('Wagtail detected!');
}

The renditions object also directly exposes 5 regular expressions depending on how strict or lax the matching should be:

  • strict: Optimized for real-world relevance, minimizing false positives.
  • less_strict_but_long: A bit looser than strict, capturing additional cases.
  • strictest: Very specific matching with no avoidable false positives.
  • lax: Looser matching that may yield more false positives.
  • laxest: The most lenient pattern based solely on rendition suffixes or the original_images folder.
if (renditions.lax.test(htmlContent)) {
  console.log('Detected potential Wagtail markup (using lax matching).');
}

How it works

Full read: Detecting Wagtail in the wild.

This uses regular expressions to check whether images on the page match a predetermined pattern:

We also check whether the rich text content on the page matches how Wagtail stores this data.

There can be false positives with such simple checks, but they have the benefit of working regardless of whether the target site is directly served by Wagtail, or if Wagtail is used as a headless CMS.

Related links

Contributing

git clone git@github.com:thibaudcolas/detect-wagtail.git
cd detect-wagtail
nvm use
npm install
npm run test
npm install netlify-cli -g
netlify dev