<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nikhil Kumar Rajak</title>
    <description>The latest articles on DEV Community by Nikhil Kumar Rajak (@ryzrr).</description>
    <link>https://dev.to/ryzrr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3980574%2Fb672cff1-96b6-4d0a-bb25-47921a808dd6.png</url>
      <title>DEV Community: Nikhil Kumar Rajak</title>
      <link>https://dev.to/ryzrr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ryzrr"/>
    <language>en</language>
    <item>
      <title>GSoC 2026 with webpack | weeks 3 to 6 - a lot happened</title>
      <dc:creator>Nikhil Kumar Rajak</dc:creator>
      <pubDate>Sun, 05 Jul 2026 13:34:45 +0000</pubDate>
      <link>https://dev.to/ryzrr/gsoc-2026-with-webpack-weeks-3-to-6-a-lot-happened-7e2</link>
      <guid>https://dev.to/ryzrr/gsoc-2026-with-webpack-weeks-3-to-6-a-lot-happened-7e2</guid>
      <description>&lt;p&gt;Hey, ryzrr back 🙌. a lot shipped since the last post so let's get into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i shipped
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/127" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat: add governance docs fetcher under pages/contribute/governance
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#127&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/127" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 09, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;
Adds a script &lt;code&gt;scripts/markdown/governance.mjs&lt;/code&gt;  that fetches the webpack governance repository's markdown files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
Automated governance docs fetching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
None&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
For  Regex  logic and lookaheads&lt;/p&gt;


    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/127" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - governance docs fetcher, pulls webpack governance docs at build time and renders them under &lt;code&gt;/about/governance&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/146" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        ci: run site build on PRs
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#146&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/146" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 18, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Adds the CI Build  to run on every PR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
CI Addition&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
Not Needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
No&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;None
&lt;strong&gt;Use of AI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/146" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - CI now builds the site on every PR and uploads the artifact for downloadble version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/151" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat(banner): show latest webpack release instead of Node.js banner
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#151&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/151" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 20, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Fixes : #143
&lt;strong&gt;Summary&lt;/strong&gt;
Bugfix + feature  :-  fixes the Node.js banner leaking in and shows a webpack release banner instead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
Feat&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
No&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
no&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
NA&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
for regex&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/151" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - release banner, auto-script approach got dropped in favour of a hand-edited self-documenting JSON config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/155" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        ci: add CodeQL scanning
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#155&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/155" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 22, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;
Adds a CodeQL security-scanning&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
CI/tooling&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
NA&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
No&lt;/p&gt;


    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/155" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
 / #157&lt;/strong&gt; - CodeQL and zizmor scanning, both merged clean&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/160" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        fix : version picker to the API docs and highlight the overview as active
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#160&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/160" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 29, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;
Adds   the  version picker and the fixup  to make overview in the governance section  as  active (highlighted)&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
Fixes some Bug and one improvement&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
NO&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
NO&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
NA&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
for the  regex  and testing&lt;/p&gt;


    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/160" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - version picker on API docs + sidebar active-state fix&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/153" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat(docs): add loaders and plugins index pages
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#153&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/153" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 21, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;This adds the loaders and plugins index pages, so &lt;code&gt;/docs/loaders&lt;/code&gt; and &lt;code&gt;/docs/plugins&lt;/code&gt; finally point to real landing pages instead of dead links (the footer already linked to them). I copied the content over from webpack.js.org and fixed up the links: our own loaders/plugins point to their local pages, built-in plugins point to their API docs, and the third-party ones keep their npm/GitHub links.&lt;/p&gt;
&lt;p&gt;This also unblocks the &lt;code&gt;#TODO[/loaders]&lt;/code&gt; and &lt;code&gt;#TODO[/plugins]&lt;/code&gt; markers in the guides from #147, since they now have somewhere to go.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/153" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - loaders and plugins index landing pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/163" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        fix(docs): resolve the guide TODOs for the plugin to its API references
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#163&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/163" rel="noopener noreferrer"&gt;&lt;time&gt;Jul 03, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Issue - #158&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;
Fixes some of the  TODOs  links&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
Fixing the  Todos&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
No&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
NA&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
Yes.&lt;/p&gt;


    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/163" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/strong&gt; - resolved guide TODO placeholder links to plugin API references&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  what I actually learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;one table should drive everything&lt;/strong&gt;&lt;br&gt;
Thanks to my mentor for this clear direction,&lt;br&gt;
for the governance fetcher, i built a single &lt;code&gt;FILE_MAP&lt;/code&gt; that drives output slugs, sidebar labels, link rewrites, and output order. adding a new governance doc is a one-line change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FILE_MAP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;README.md&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;index&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Overview&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;CHARTER.md&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;charter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Charter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pageLink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;index&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/about/governance&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`/about/governance/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of scattering config across multiple files, one source of truth means one place to change. took me a bit to land on this but it made everything downstream cleaner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;automation vs manual control is a real design work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;my first cut of the release banner was fully automated, script pulls the latest release and generates the banner. clean in theory. but there are real situations where a maintainer needs the banner to say something specific and automation just gets in the way.&lt;/p&gt;

&lt;p&gt;so we decided going up with a self-documenting JSON config instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json-doc"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"//"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"To put a banner up, copy 'example' into 'index' and edit the text."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"type is 'default' (blue), 'warning' (orange), or 'error' (red)."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"websiteBanners"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"example"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"webpack 5.x.0 is now available, read the release notes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"link"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/blog/posts/your-release-post"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;no entry, no banner. dead simple, no magic. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;always check if something already has what you need&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;my first approach for detecting the current version in the version picker was this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;currentVersion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;isVersioned&lt;/span&gt;
  &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sidebar&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;docs&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;api&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;v&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="sr"&gt;x/&lt;/span&gt;&lt;span class="p"&gt;)?.[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pattern-matching against the sidebar JSON to extract the version. it worked, &lt;br&gt;
but i completely forgot the config already exposes it directly. the fix was simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#theme/config&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;versionBase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;isVersioned&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`/docs/api/v&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;major&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.x`&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;one import, done. lesson: before doing something clever, check if the boring solution already exists somewhere in the codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;read review comments before pushing a fix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;i pushed a fixup on PR before reading the comments properly and fixed the thing. caught it myself, but coincidently it was correct. not a disaster but the kind of thing you don't forget.&lt;/p&gt;




&lt;h2&gt;
  
  
  what's next
&lt;/h2&gt;

&lt;p&gt;wrapping up loose ends mostly. identifying anything missing, catching edge cases, and generally making sure things hold up before we call it production-ready. CI hardening, filling automation gaps, and tackling the version routing things.&lt;/p&gt;

&lt;p&gt;will be back, ryzrr! &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webpack</category>
      <category>gsoc</category>
      <category>documentation</category>
    </item>
    <item>
      <title>First post of my GSoC'26 journey at webpack, more to come 🚀</title>
      <dc:creator>Nikhil Kumar Rajak</dc:creator>
      <pubDate>Sat, 20 Jun 2026 08:19:11 +0000</pubDate>
      <link>https://dev.to/ryzrr/first-post-of-my-gsoc26-journey-at-webpack-more-to-come-4p06</link>
      <guid>https://dev.to/ryzrr/first-post-of-my-gsoc26-journey-at-webpack-more-to-come-4p06</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j" class="crayons-story__hidden-navigation-link"&gt;GSoC 2026 with webpack | working on webpack-doc-kit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ryzrr" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3980574%2Fb672cff1-96b6-4d0a-bb25-47921a808dd6.png" alt="ryzrr profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ryzrr" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nikhil Kumar Rajak
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nikhil Kumar Rajak
                
              
              &lt;div id="story-author-preview-content-3947414" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ryzrr" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3980574%2Fb672cff1-96b6-4d0a-bb25-47921a808dd6.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nikhil Kumar Rajak&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j" id="article-link-3947414"&gt;
          GSoC 2026 with webpack | working on webpack-doc-kit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webpack"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webpack&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gsoc"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gsoc&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;17&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>devjournal</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>GSoC 2026 with webpack | working on webpack-doc-kit</title>
      <dc:creator>Nikhil Kumar Rajak</dc:creator>
      <pubDate>Sat, 20 Jun 2026 08:15:53 +0000</pubDate>
      <link>https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j</link>
      <guid>https://dev.to/ryzrr/gsoc-2026-with-webpack-working-on-webpack-doc-kit-228j</guid>
      <description>&lt;p&gt;Hola, i'm ryzrr, working on webpack-doc-kit as part of GSoC 2026 with the webpack org. first post here, I know I'm a bit late 🥲 gonna keep it focused on what i actually did instead of writing a whole essay about my feelings on open source, will definitely write but in the next blog post :) &lt;/p&gt;

&lt;p&gt;my part of the project is CI/CD ,deployment automation and release awareness for the pipeline. sounds interesting ,right ? but let me tell you it's the stuff that quietly breaks everything if you get it wrong, so i'll take it.&lt;/p&gt;

&lt;h2&gt;
  
  
  community bonding
&lt;/h2&gt;

&lt;p&gt;mostly just read stuff. issues, existing pipeline code, how versioning worked before i touched anything. also figured out how my work overlaps with my team mates so we don't end up building the same thing twice by accident &amp;amp; followed by a daily conversation on Discord and discussions and  a onboarding meet.&lt;/p&gt;

&lt;p&gt;barely wrote any code this phase. felt weird at first not to be shipping anything but turns out understanding the thing you're about to automate is kind of important. who knew.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i actually shipped
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;versions.json&lt;/strong&gt; - the file that tracks the latest version of the webpack release across the whole doc pipeline. had to exist before anything downstream could rely on it, so this was step one. &lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/110" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat: add versions.json version metadata contract
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#110&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/110" rel="noopener noreferrer"&gt;&lt;time&gt;May 26, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Links to : #105&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Summary&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Adds &lt;code&gt;versions.json&lt;/code&gt; as the shared version metadata contract for the documentation pipeline. This is the single source of truth that &lt;code&gt;update-versions.mjs&lt;/code&gt;, &lt;code&gt;place-output.mjs&lt;/code&gt;, &lt;code&gt;release.yml&lt;/code&gt;  will all read from.&lt;/p&gt;
&lt;p&gt;Real values: &lt;code&gt;v5.x&lt;/code&gt; reflects the actual latest webpack release on npm (&lt;code&gt;5.107.1&lt;/code&gt;) and the commit matches the current &lt;code&gt;HEAD_COMMIT&lt;/code&gt;. The &lt;code&gt;v6.x&lt;/code&gt; entry has &lt;code&gt;null&lt;/code&gt; values since v6 has no npm release yet, these get filled automatically by &lt;code&gt;release.yml&lt;/code&gt; when webpack tags a v6 release.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What kind of change does this PR introduce?&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;New file, no existing behaviour is modified.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Did you add tests for your changes?&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Tests will come alongside &lt;code&gt;update-versions.mjs&lt;/code&gt; which reads and mutates this file. Adding them here in isolation would not be meaningful without the script that uses it.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Does this PR introduce a breaking change?&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;No. Nothing currently depends on this file.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;If relevant, what needs to be documented?&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Schema is already documented and  shared with the team.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Use of AI&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Used  for writing the PR Desc.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/110" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;readme fetch automation&lt;/strong&gt; - with this now pulls readme content of all the loaders and plugins available in the webpack ecosystem on its own instead of someone copy pasting it in manually.&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/122" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat: automate fetching and sanitization of webpack ecosystem readmes
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#122&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F145889151%3Fv%3D4" alt="ryzrr avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ryzrr" rel="noopener noreferrer"&gt;ryzrr&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/webpack/webpack-doc-kit/pull/122" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 05, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Issue Link  : #103&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;
Introduced &lt;code&gt;fetch-readmes.mjs&lt;/code&gt;  which fetches the readme of all loaders and plugins present in the  webpack org and passes the md file to pipeline   to generate the documentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What kind of change does this PR introduce?&lt;/strong&gt;
New Feature (Build/Automation Script).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you add tests for your changes?&lt;/strong&gt;
NO&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does this PR introduce a breaking change?&lt;/strong&gt;
NO&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If relevant, what needs to be documented once your changes are merged or what have you already documented?&lt;/strong&gt;
NA&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use of AI&lt;/strong&gt;
Yes, for testing  and refinement of the regex and sanitization logic&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpack/webpack-doc-kit/pull/122" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;release-triggered version sync&lt;/strong&gt; - A .yml file, this is the one that keeps everything aware of the version(latest one) a github actions workflow that watches for new release tags on the core webpack repo, then raise a PR with the updates &lt;code&gt;versions.json&lt;/code&gt;, and opens up for maintainer review. vercel grabs that PR and rebuilds the docs. so a new release basically ships updated docs on its own now. feels like magic, is not magic, is just yaml.👌&lt;/p&gt;

&lt;h2&gt;
  
  
  two bugs that i encountered during my week (briefly)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;remark-alerts&lt;/strong&gt; had edge cases , like there  where no support for github remarks. spent way too long assuming i was doing something wrong before realizing it just wasn't handled. filed a feature request upstream on &lt;code&gt;nodejs/doc-kit&lt;/code&gt; instead of duct-taping around it. Thanks to my mentor , who helped me figured the root issue for this.&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/nodejs/doc-kit/pull/832" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat(remark): add alert support
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#832&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/avivkeller" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F38299977%3Fv%3D4" alt="avivkeller avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/avivkeller" rel="noopener noreferrer"&gt;avivkeller&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/nodejs/doc-kit/pull/832" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 06, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Fixes #831:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/user-attachments/assets/20d79083-e5f8-4636-8c22-2c23dce301da"&gt;&lt;img width="911" height="342" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F20d79083-e5f8-4636-8c22-2c23dce301da"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nodejs/doc-kit/pull/832" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;shiki&lt;/strong&gt; was silently failing builds on languages it didn't support. no error, no warning, just a build that quietly didn't work. found it by accident honestly 😅. glad it was now and not three weeks from now when someone else hits it in prod. Again my mentors help me out , they raised an upstream PR  for it and fixed  the issue.🙇&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/nodejs/nodejs.org/pull/8952" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        fix(shiki): fallback to plaintext on unknown lang
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#8952&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/avivkeller" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F38299977%3Fv%3D4" alt="avivkeller avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/avivkeller" rel="noopener noreferrer"&gt;avivkeller&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/nodejs/nodejs.org/pull/8952" rel="noopener noreferrer"&gt;&lt;time&gt;Jun 06, 2026&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;In the event that an unknown language is added, we should fall back to &lt;code&gt;text&lt;/code&gt;, rather than fail the entire build&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nodejs/nodejs.org/pull/8952" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  what's next
&lt;/h2&gt;

&lt;p&gt;tightening up CI checks and syncing more with my teams as our pieces start overlapping. probably more to say about that next time.&lt;/p&gt;

&lt;p&gt;that's it for post one. short and sweet, like my attention span this week.&lt;br&gt;
will be back, shortly - ryzrr!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>webpack</category>
      <category>gsoc</category>
    </item>
  </channel>
</rss>
