Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(blog): add onUntruncatedBlogPosts blog options #10375

Merged
merged 10 commits into from
Aug 9, 2024
Merged

Conversation

OzakIOne
Copy link
Collaborator

@OzakIOne OzakIOne commented Aug 5, 2024

Motivation

Fix #10289

Using onUntruncatedBlogPosts: "throw" is useful for blogs that want to ensure a consistent usage of truncation markers.

By default, we emit a warning, but it's also possible to throw and fail a build:

CleanShot 2024-08-09 at 16 31 41@2x

The default is quite opinionated so the error message makes it clear how to disable it by using onUntruncatedBlogPosts: 'ignore'

Test Plan

Unit test & ci

Test links

Deploy preview: https://deploy-preview-10375--docusaurus-2.netlify.app/docs/api/plugins/@docusaurus/plugin-content-blog/#onUntruncatedBlogPost

@facebook-github-bot facebook-github-bot added the CLA Signed Signed Facebook CLA label Aug 5, 2024
Copy link

netlify bot commented Aug 5, 2024

[V2]

Name Link
🔨 Latest commit 9252af7
🔍 Latest deploy log https://app.netlify.com/sites/docusaurus-2/deploys/66b6283d920a290008eb6937
😎 Deploy Preview https://deploy-preview-10375--docusaurus-2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link

github-actions bot commented Aug 5, 2024

⚡️ Lighthouse report for the deploy preview of this PR

URL Performance Accessibility Best Practices SEO Report
/ 🔴 42 🟢 98 🟢 96 🟢 100 Report
/docs/installation 🟠 52 🟢 97 🟢 100 🟢 100 Report
/docs/category/getting-started 🟠 74 🟢 100 🟢 100 🟠 86 Report
/blog 🟠 67 🟢 96 🟢 100 🟠 86 Report
/blog/preparing-your-site-for-docusaurus-v3 🔴 48 🟢 92 🟢 100 🟢 100 Report
/blog/tags/release 🟠 70 🟢 96 🟢 100 🟠 86 Report
/blog/tags 🟠 75 🟢 100 🟢 100 🟠 86 Report

Copy link

github-actions bot commented Aug 5, 2024

Size Change: -604 B (-0.01%)

Total Size: 11.5 MB

Filename Size Change
website/.docusaurus/docusaurus.config.mjs 27.8 kB +89 B (+0.32%)
website/build/assets/js/main.********.js 676 kB +63 B (+0.01%)
website/build/docs/api/plugins/@docusaurus/plugin-content-blog.html 198 kB +288 B (+0.15%)
ℹ️ View Unchanged
Filename Size Change
website/.docusaurus/codeTranslations.json 2 B 0 B
website/.docusaurus/globalData.json 30 kB 0 B
website/.docusaurus/i18n.json 930 B 0 B
website/.docusaurus/registry.js 153 kB 0 B
website/.docusaurus/routes.js 73.6 kB 0 B
website/.docusaurus/routesChunkNames.json 80.4 kB 0 B
website/.docusaurus/site-metadata.json 2.17 kB 0 B
website/build/assets/css/styles.********.css 113 kB 0 B
website/build/blog.html 61.9 kB 0 B
website/build/blog/2017/12/14/introducing-docusaurus.html 74.7 kB -14 B (-0.02%)
website/build/blog/2018/04/30/How-I-Converted-Profilo-To-Docusaurus.html 47.2 kB -1 B (0%)
website/build/blog/2018/09/11/Towards-Docusaurus-2.html 51.6 kB -1 B (0%)
website/build/blog/2018/12/14/Happy-First-Birthday-Slash.html 33.1 kB -14 B (-0.04%)
website/build/blog/2019/12/30/docusaurus-2019-recap.html 39.5 kB -14 B (-0.04%)
website/build/blog/2020/01/07/tribute-to-endi.html 33.9 kB -14 B (-0.04%)
website/build/blog/2021/01/19/docusaurus-2020-recap.html 48.8 kB -14 B (-0.03%)
website/build/blog/2021/03/09/releasing-docusaurus-i18n.html 45 kB -14 B (-0.03%)
website/build/blog/2021/05/12/announcing-docusaurus-two-beta.html 51.8 kB -14 B (-0.03%)
website/build/blog/2021/11/21/algolia-docsearch-migration.html 52.8 kB -1 B (0%)
website/build/blog/2022/01/24/docusaurus-2021-recap.html 44.4 kB -14 B (-0.03%)
website/build/blog/2022/08/01/announcing-docusaurus-2.0.html 142 kB -14 B (-0.01%)
website/build/blog/2022/09/01/docusaurus-2.1.html 50.8 kB -14 B (-0.03%)
website/build/blog/archive.html 24.6 kB 0 B
website/build/blog/authors.html 46.4 kB 0 B
website/build/blog/authors/j-marcey.html 74.9 kB 0 B
website/build/blog/authors/josh-cena.html 45.7 kB 0 B
website/build/blog/authors/lex-111.html 57.3 kB 0 B
website/build/blog/authors/slorber.html 62.1 kB 0 B
website/build/blog/authors/slorber/authors/2.html 64.6 kB 0 B
website/build/blog/authors/slorber/authors/3.html 86.1 kB 0 B
website/build/blog/authors/slorber/authors/4.html 37 kB 0 B
website/build/blog/authors/yangshun.html 64.9 kB 0 B
website/build/blog/authors/zpao.html 46.2 kB 0 B
website/build/blog/page/2.html 65.1 kB 0 B
website/build/blog/page/3.html 82.8 kB 0 B
website/build/blog/page/4.html 58.3 kB 0 B
website/build/blog/page/5.html 39.1 kB 0 B
website/build/blog/preparing-your-site-for-docusaurus-v3.html 138 kB -14 B (-0.01%)
website/build/blog/releases/2.2.html 49.5 kB -13 B (-0.03%)
website/build/blog/releases/2.3.html 60.7 kB -13 B (-0.02%)
website/build/blog/releases/2.4.html 65.2 kB -13 B (-0.02%)
website/build/blog/releases/3.0.html 111 kB -1 B (0%)
website/build/blog/releases/3.1.html 51.9 kB -12 B (-0.02%)
website/build/blog/releases/3.2.html 48.7 kB -13 B (-0.03%)
website/build/blog/releases/3.3.html 55.4 kB -13 B (-0.02%)
website/build/blog/releases/3.4.html 55.5 kB -6 B (-0.01%)
website/build/blog/tags.html 28.4 kB 0 B
website/build/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing.html 128 kB -13 B (-0.01%)
website/build/docs.html 49.4 kB -4 B (-0.01%)
website/build/docs/advanced.html 31.1 kB -13 B (-0.04%)
website/build/docs/advanced/architecture.html 30.7 kB -9 B (-0.03%)
website/build/docs/advanced/client.html 76 kB -13 B (-0.02%)
website/build/docs/advanced/plugins.html 58.6 kB -13 B (-0.02%)
website/build/docs/advanced/routing.html 73.9 kB -5 B (-0.01%)
website/build/docs/advanced/ssg.html 81.5 kB -13 B (-0.02%)
website/build/docs/api/docusaurus-config.html 200 kB -13 B (-0.01%)
website/build/docs/api/misc/@docusaurus/eslint-plugin.html 48.3 kB -9 B (-0.02%)
website/build/docs/api/misc/@docusaurus/eslint-plugin/no-html-links.html 38.1 kB -13 B (-0.03%)
website/build/docs/api/misc/@docusaurus/eslint-plugin/no-untranslated-text.html 37 kB -13 B (-0.04%)
website/build/docs/api/misc/@docusaurus/eslint-plugin/prefer-docusaurus-heading.html 38.3 kB -9 B (-0.02%)
website/build/docs/api/misc/@docusaurus/eslint-plugin/string-literal-i18n-messages.html 41.9 kB -13 B (-0.03%)
website/build/docs/api/misc/@docusaurus/logger.html 39.8 kB -13 B (-0.03%)
website/build/docs/api/misc/create-docusaurus.html 34.9 kB -12 B (-0.03%)
website/build/docs/api/plugin-methods.html 67.4 kB -9 B (-0.01%)
website/build/docs/api/plugin-methods/extend-infrastructure.html 63 kB -9 B (-0.01%)
website/build/docs/api/plugin-methods/i18n-lifecycles.html 60.6 kB -9 B (-0.01%)
website/build/docs/api/plugin-methods/lifecycle-apis.html 170 kB -13 B (-0.01%)
website/build/docs/api/plugin-methods/static-methods.html 46.5 kB -9 B (-0.02%)
website/build/docs/api/plugins.html 31.6 kB -13 B (-0.04%)
website/build/docs/api/plugins/@docusaurus/plugin-client-redirects.html 62.6 kB 0 B
website/build/docs/api/plugins/@docusaurus/plugin-content-docs.html 202 kB -4 B (0%)
website/build/docs/api/plugins/@docusaurus/plugin-content-pages.html 78 kB -13 B (-0.02%)
website/build/docs/api/plugins/@docusaurus/plugin-debug.html 50.5 kB -13 B (-0.03%)
website/build/docs/api/plugins/@docusaurus/plugin-google-analytics.html 51.5 kB -13 B (-0.03%)
website/build/docs/api/plugins/@docusaurus/plugin-google-gtag.html 51 kB -17 B (-0.03%)
website/build/docs/api/plugins/@docusaurus/plugin-google-tag-manager.html 49.8 kB -13 B (-0.03%)
website/build/docs/api/plugins/@docusaurus/plugin-ideal-image.html 51.1 kB -9 B (-0.02%)
website/build/docs/api/plugins/@docusaurus/plugin-pwa.html 122 kB -9 B (-0.01%)
website/build/docs/api/plugins/@docusaurus/plugin-sitemap.html 68.5 kB -7 B (-0.01%)
website/build/docs/api/plugins/@docusaurus/plugin-vercel-analytics.html 42.2 kB -1 B (0%)
website/build/docs/api/themes.html 30.4 kB -13 B (-0.04%)
website/build/docs/api/themes/@docusaurus/theme-classic.html 46.4 kB -9 B (-0.02%)
website/build/docs/api/themes/@docusaurus/theme-live-codeblock.html 38.6 kB -9 B (-0.02%)
website/build/docs/api/themes/@docusaurus/theme-mermaid.html 37.5 kB -9 B (-0.02%)
website/build/docs/api/themes/@docusaurus/theme-search-algolia.html 34.7 kB -13 B (-0.04%)
website/build/docs/api/themes/configuration.html 256 kB -6 B (0%)
website/build/docs/blog.html 219 kB -7 B (0%)
website/build/docs/browser-support.html 51 kB -13 B (-0.03%)
website/build/docs/category/getting-started.html 28.3 kB 0 B
website/build/docs/category/guides.html 36.4 kB 0 B
website/build/docs/cli.html 63.8 kB -12 B (-0.02%)
website/build/docs/configuration.html 98.5 kB -9 B (-0.01%)
website/build/docs/create-doc.html 65.3 kB -1 B (0%)
website/build/docs/creating-pages.html 59.1 kB -12 B (-0.02%)
website/build/docs/deployment.html 211 kB -4 B (0%)
website/build/docs/docs-introduction.html 53.6 kB -13 B (-0.02%)
website/build/docs/docs-multi-instance.html 78.7 kB -9 B (-0.01%)
website/build/docs/docusaurus-core.html 245 kB -13 B (-0.01%)
website/build/docs/guides/whats-next.html 32.8 kB -13 B (-0.04%)
website/build/docs/i18n/crowdin.html 151 kB -1 B (0%)
website/build/docs/i18n/git.html 82.6 kB -9 B (-0.01%)
website/build/docs/i18n/introduction.html 50.7 kB -13 B (-0.03%)
website/build/docs/i18n/tutorial.html 171 kB 0 B
website/build/docs/installation.html 73 kB -1 B (0%)
website/build/docs/introduction/index.html 280 B 0 B
website/build/docs/markdown-features.html 83.2 kB -12 B (-0.01%)
website/build/docs/markdown-features/admonitions.html 118 kB -9 B (-0.01%)
website/build/docs/markdown-features/assets.html 93.5 kB -11 B (-0.01%)
website/build/docs/markdown-features/code-blocks.html 245 kB -9 B (0%)
website/build/docs/markdown-features/diagrams.html 56 kB +1 B (0%)
website/build/docs/markdown-features/head-metadata.html 52.8 kB -13 B (-0.02%)
website/build/docs/markdown-features/links.html 43.1 kB -13 B (-0.03%)
website/build/docs/markdown-features/math-equations.html 95.4 kB -2 B (0%)
website/build/docs/markdown-features/plugins.html 101 kB -5 B (0%)
website/build/docs/markdown-features/react.html 144 kB -13 B (-0.01%)
website/build/docs/markdown-features/tabs.html 148 kB -13 B (-0.01%)
website/build/docs/markdown-features/toc.html 88.8 kB -9 B (-0.01%)
website/build/docs/migration.html 43 kB -14 B (-0.03%)
website/build/docs/migration/v2.html 41.2 kB -13 B (-0.03%)
website/build/docs/migration/v2/automated.html 42.6 kB -13 B (-0.03%)
website/build/docs/migration/v2/manual.html 207 kB -13 B (-0.01%)
website/build/docs/migration/v2/translated-sites.html 52.8 kB -13 B (-0.02%)
website/build/docs/migration/v2/versioned-sites.html 67.2 kB -13 B (-0.02%)
website/build/docs/migration/v3.html 218 kB -12 B (-0.01%)
website/build/docs/playground.html 32.5 kB -13 B (-0.04%)
website/build/docs/resources/index.html 325 B 0 B
website/build/docs/search.html 121 kB -1 B (0%)
website/build/docs/seo.html 93 kB 0 B
website/build/docs/sidebar.html 136 kB -9 B (-0.01%)
website/build/docs/sidebar/autogenerated.html 156 kB 0 B
website/build/docs/sidebar/items.html 188 kB -13 B (-0.01%)
website/build/docs/sidebar/multiple-sidebars.html 67.1 kB -9 B (-0.01%)
website/build/docs/static-assets.html 56.2 kB -9 B (-0.02%)
website/build/docs/styling-layout.html 141 kB -10 B (-0.01%)
website/build/docs/support/index.html 319 B 0 B
website/build/docs/swizzling.html 120 kB +1 B (0%)
website/build/docs/team/index.html 310 B 0 B
website/build/docs/typescript-support.html 65.4 kB -13 B (-0.02%)
website/build/docs/using-plugins.html 115 kB 0 B
website/build/docs/versioning.html 87.1 kB 0 B
website/build/index.html 37.8 kB 0 B

compressed-size-action

Copy link
Collaborator

@slorber slorber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks almost good but I'd prefer to move the error emission later in the process and improve DX

Comment on lines 50 to 66
function reportTruncateMarkerProblem({
blogSourceRelative,
truncateMarker,
options,
content,
}: {
content: string;
truncateMarker: RegExp;
blogSourceRelative: string;
options: Pick<PluginOptions, 'onUntruncatedBlogPost'>;
}): void {
if (!truncateMarker.test(content)) {
logger.report(options.onUntruncatedBlogPost)(
logger.interpolate`Blog post path=${blogSourceRelative} is not truncated.`,
);
}
}
Copy link
Collaborator

@slorber slorber Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't run this Regex against the content twice: this can be expensive and is useless work. We already run it later in the blog post processing to compute the hasTruncateMarker meta attribute.

Note that in the future we'll probably handle that with Remark (the RegExp is the historical solution).

I'd prefer if:

  • we emit the warning based on blogPost.metadata.hasTruncateMarker
  • we emit a single report for all the blog posts
  • we explain in the message that this can be turned off with the blog onUntruncatedBlogPost: 'ignore' option. Many sites run with untruncated blogs on purpose, let's give them a better upgrading experience if warn is the default.

The function should rather be something like this:

function reportTruncateMarkerProblem({
  blogPosts,
  onUntruncatedBlogPost,
}: {
  blogPosts: BlogPost[],
  onUntruncatedBlogPost: PluginOptions['onUntruncatedBlogPost']
}): void {
  const untruncatedBlogPosts = blogPosts.filter(p => !p.metadata.hasTruncateMarker)
  if (onUntruncatedBlogPost !== "ignore" && onUntruncatedBlogPost.length > 0) {
    const message = `Blabla there are untruncated blog posts:
${untruncatedBlogPosts.map(getPath).join('\n- ')}
Blabla additional help`
    logger.report(options.onUntruncatedBlogPost)(message);
  }
}

@slorber slorber changed the title feat: onUntruncatedBlogPost blog options feat(blog): add onUntruncatedBlogPost blog options Aug 8, 2024
@slorber slorber added the pr: new feature This PR adds a new API or behavior. label Aug 8, 2024
@slorber slorber changed the title feat(blog): add onUntruncatedBlogPost blog options feat(blog): add onUntruncatedBlogPosts blog options Aug 9, 2024
Copy link
Collaborator

@slorber slorber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed Signed Facebook CLA pr: new feature This PR adds a new API or behavior.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

plugin-content-blog: add rejectPostsWithoutTruncate option
3 participants