<?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>Forem: sakshsky</title>
    <description>The latest articles on Forem by sakshsky (@sakshsky_89).</description>
    <link>https://forem.com/sakshsky_89</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3876072%2F0978dd4c-073f-462a-b807-bcb869b57f6a.png</url>
      <title>Forem: sakshsky</title>
      <link>https://forem.com/sakshsky_89</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sakshsky_89"/>
    <language>en</language>
    <item>
      <title>Building repomeld: From Simple Script to Production-Ready CLI Tool</title>
      <dc:creator>sakshsky</dc:creator>
      <pubDate>Fri, 24 Apr 2026 01:14:06 +0000</pubDate>
      <link>https://forem.com/sakshsky_89/building-repomeld-from-simple-script-to-production-ready-cli-tool-42jc</link>
      <guid>https://forem.com/sakshsky_89/building-repomeld-from-simple-script-to-production-ready-cli-tool-42jc</guid>
      <description>&lt;h3&gt;
  
  
  The Problem That Started It All
&lt;/h3&gt;

&lt;p&gt;It was 3 AM, and I was staring at yet another ChatGPT conversation, manually copying files from my project one by one. "Here's &lt;code&gt;index.js&lt;/code&gt;... now here's &lt;code&gt;utils.js&lt;/code&gt;... oh, and don't forget &lt;code&gt;config.js&lt;/code&gt;..." &lt;/p&gt;

&lt;p&gt;I was building an AI-powered feature and needed to give the model context about my entire codebase. But copy-pasting 20+ files? Every. Single. Time.&lt;/p&gt;

&lt;p&gt;There had to be a better way.&lt;/p&gt;

&lt;p&gt;That's when the idea hit me: &lt;strong&gt;What if I could merge my entire repository into a single file with one command?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three months later, &lt;a href="https://www.npmjs.com/package/repomeld" rel="noopener noreferrer"&gt;repomeld&lt;/a&gt; was born — and it's now helping thousands of developers prepare context for AI tools, conduct code reviews, and archive their projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Journey: From 200 Lines to Production
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Week 1: The MVP (Minimum Viable Product)
&lt;/h4&gt;

&lt;p&gt;The first version was embarrassingly 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="c1"&gt;// Just 200 lines of synchronous code&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getAllFiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Read all files recursively&lt;/span&gt;
  &lt;span class="c1"&gt;// Skip node_modules&lt;/span&gt;
  &lt;span class="c1"&gt;// Concatenate them&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It worked... barely. It took 30 seconds to scan a medium-sized project and crashed on anything with binary files.&lt;/p&gt;

&lt;h4&gt;
  
  
  Week 3: Adding Real Features
&lt;/h4&gt;

&lt;p&gt;I realized I was building something people actually wanted. The GitHub issues started rolling in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Can you add &lt;code&gt;.gitignore&lt;/code&gt; support?"&lt;/li&gt;
&lt;li&gt;"What about binary file detection?"&lt;/li&gt;
&lt;li&gt;"Make it faster!"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I rebuilt everything.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Technical Deep Dive
&lt;/h3&gt;

&lt;p&gt;Here's what I learned building a production-grade CLI tool:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Performance Optimization: The 10x Improvement
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Initial version using synchronous &lt;code&gt;fs.readdirSync&lt;/code&gt; blocked the event loop and took forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; Async iteration with intelligent caching.&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="c1"&gt;// Before: Blocking and slow&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readdirSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dirPath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;for &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;file&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Process each file...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// After: Async and 10x faster&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;entries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentDir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;withFileTypes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Process concurrently&lt;/span&gt;
&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Scanning 10,000 files went from 45 seconds to 3.2 seconds.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Binary Detection: The Tricky Part
&lt;/h4&gt;

&lt;p&gt;Detecting binary files sounds simple until you realize UTF-8 text can contain null bytes and some binaries don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; Hybrid approach - extension blacklist + content sampling.&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;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;isBinaryFileFast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Cache results&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;binaryCache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;binaryCache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Quick extension check&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;BINARY_EXTENSIONS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Sample first 512 bytes&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;buffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&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="c1"&gt;// Null byte = binary&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Cross-Platform Path Hell
&lt;/h4&gt;

&lt;p&gt;Windows vs. Unix paths caused endless bugs. &lt;code&gt;node_modules&lt;/code&gt; wouldn't ignore properly on Windows because of backslashes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; Normalize everything.&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;normalizePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sep&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Now "src\\utils\\index.js" becomes "src/utils/index.js"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  4. The Recursion Problem
&lt;/h4&gt;

&lt;p&gt;Users kept accidentally including repomeld's own output files, causing infinite loops and massive file bloat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; Hard-coded ignore + pattern matching.&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="c1"&gt;// Always ignore anything starting with "repomeld"&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;repomeld&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Features That Made the Difference
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Gitignore Support (Most Requested)
&lt;/h4&gt;

&lt;p&gt;Respecting &lt;code&gt;.gitignore&lt;/code&gt; was non-negotiable. I used the &lt;code&gt;ignore&lt;/code&gt; package:&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;ig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ignore&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;ig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.gitignore&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;utf8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ignores&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node_modules/lodash/index.js&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="c1"&gt;// Skip it&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Three Output Styles
&lt;/h4&gt;

&lt;p&gt;Users wanted flexibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Banner&lt;/strong&gt;: Clear visual separation with metadata&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown&lt;/strong&gt;: Perfect for pasting into AI tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal&lt;/strong&gt;: Just the code, nothing else&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Smart Defaults with Overrides
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&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;"ignore"&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;"node_modules"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Always&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ignored&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"dist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;output&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"package.json"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Can&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;overridden&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;--force-include&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;h4&gt;
  
  
  4. Auto-Numbered Backups
&lt;/h4&gt;

&lt;p&gt;Never overwrite existing files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repomeld_output.txt       # First run
repomeld_output__2.txt    # Second run
repomeld_output__3.txt    # Third run
repomeld_zips/            # Automatic zip backups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Lessons Learned
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Start with the CLI, Not the Library
&lt;/h4&gt;

&lt;p&gt;Building the command-line interface first forced me to think about user experience from day one.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Test on Windows Early
&lt;/h4&gt;

&lt;p&gt;Most of my early users were on Windows, but I developed on Mac. Big mistake. Add Windows to your CI pipeline immediately.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Feature Flags Are Your Friend
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;repomeld &lt;span class="nt"&gt;--dry-run&lt;/span&gt;      &lt;span class="c"&gt;# Preview without writing&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--no-backup&lt;/span&gt;    &lt;span class="c"&gt;# Skip zip creation&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--no-update-check&lt;/span&gt;  &lt;span class="c"&gt;# For CI/CD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  4. Documentation Is Not Optional
&lt;/h4&gt;

&lt;p&gt;My initial README was three sentences. After expanding it to 400+ lines, downloads increased 5x.&lt;/p&gt;




&lt;h3&gt;
  
  
  What's Next?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;repomeld v4.0&lt;/strong&gt; is in development with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Watch mode&lt;/strong&gt;: Automatically rebuild when files change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diff views&lt;/strong&gt;: Show what changed between runs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency graphs&lt;/strong&gt;: Visualize file relationships&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI prompts&lt;/strong&gt;: Generate optimized prompts from your codebase&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
repomeld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You'll get a single file containing your entire codebase - perfect for AI context, code reviews, or archiving.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Human Side
&lt;/h3&gt;

&lt;p&gt;Building repomeld taught me that the best tools solve real problems simply. Not every CLI needs AI or blockchain or microservices. Sometimes, you just need to combine text files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm currently available for freelance and full-time opportunities.&lt;/strong&gt; If you need a developer who understands both the technical and human sides of building developer tools, let's talk.&lt;/p&gt;

&lt;p&gt;📧 &lt;strong&gt;&lt;a href="mailto:susheelhbti@gmail.com"&gt;susheelhbti@gmail.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/susheel/repomeld" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/repomeld" rel="noopener noreferrer"&gt;NPM Package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/susheel/repomeld#readme" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://repomeld.com/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Have a suggestion for repomeld? Open an issue on GitHub. Found a bug? PRs welcome. Want to hire me? Email me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy coding!&lt;/strong&gt; 🔥&lt;/p&gt;




&lt;h2&gt;
  
  
  Appendix: Architecture Diagram
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repomeld/
├── bin/
│   └── cli.js                 # CLI entry point
├── src/
│   ├── core/
│   │   ├── fileScanner.js     # Async file traversal
│   │   ├── ignoreBuilder.js   # Gitignore parsing
│   │   ├── formatter.js       # Output formatting
│   │   └── progress.js        # Progress indicator
│   ├── utils/
│   │   ├── helpers.js         # Utilities
│   │   ├── constants.js       # Config
│   │   └── backup.js          # Zip creation
│   └── index.js               # Main orchestration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; Clean architecture and separation of concerns made the codebase maintainable as features grew. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>repomeld 🔥 – Turn Your Entire Repo into One Clean File for AI &amp; Reviews</title>
      <dc:creator>sakshsky</dc:creator>
      <pubDate>Tue, 21 Apr 2026 05:20:11 +0000</pubDate>
      <link>https://forem.com/sakshsky_89/repomeld-turn-your-entire-repo-into-one-clean-file-for-ai-reviews-pnd</link>
      <guid>https://forem.com/sakshsky_89/repomeld-turn-your-entire-repo-into-one-clean-file-for-ai-reviews-pnd</guid>
      <description>&lt;p&gt;Tired of copy-pasting dozens of files when talking to AI or doing code reviews?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;repomeld&lt;/strong&gt; fixes that in seconds.&lt;/p&gt;

&lt;p&gt;It scans your project, skips all the noise (&lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, lock files, etc.), and merges everything into &lt;strong&gt;one single readable file&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Use (Super Simple)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld

&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
repomeld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. You’ll get a clean &lt;code&gt;repomeld_output.txt&lt;/code&gt; with a Table of Contents and clear file separators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Friendly Mode&lt;/strong&gt;: Use &lt;code&gt;--style markdown&lt;/code&gt; to get perfect fenced code blocks for ChatGPT, Claude, Cursor, etc.&lt;/li&gt;
&lt;li&gt;Auto-numbered outputs (&lt;code&gt;repomeld_output__2.txt&lt;/code&gt;, etc.) — never overwrites old files&lt;/li&gt;
&lt;li&gt;Smart defaults — ignores junk automatically&lt;/li&gt;
&lt;li&gt;Flexible filtering: &lt;code&gt;--ext&lt;/code&gt;, &lt;code&gt;--include&lt;/code&gt;, &lt;code&gt;--exclude&lt;/code&gt;, &lt;code&gt;--max-size&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;Dry-run mode to preview first&lt;/li&gt;
&lt;li&gt;Custom ignores via &lt;code&gt;repomeld.ignore.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Examples
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Markdown style for AI&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--style&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; context.md

&lt;span class="c"&gt;# Only TypeScript files&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--ext&lt;/span&gt; ts tsx

&lt;span class="c"&gt;# Skip tests and large files&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--exclude&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--max-size&lt;/span&gt; 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Who It's For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Developers feeding large codebases to AI models&lt;/li&gt;
&lt;li&gt;Teams doing code reviews&lt;/li&gt;
&lt;li&gt;Freelancers sharing projects quickly&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Try it now:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld
repomeld &lt;span class="nt"&gt;--style&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;a href="https://www.npmjs.com/package/repomeld" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/repomeld&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Built by &lt;strong&gt;Susheel&lt;/strong&gt; — currently &lt;strong&gt;open to freelance &amp;amp; full-time opportunities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Got a project? Reach out: &lt;strong&gt;&lt;a href="mailto:susheelhbti@gmail.com"&gt;susheelhbti@gmail.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>ai</category>
    </item>
    <item>
      <title>🧹 repomeld v1.1: Finally, a Tool That Knows What NOT to Include</title>
      <dc:creator>sakshsky</dc:creator>
      <pubDate>Thu, 16 Apr 2026 04:39:21 +0000</pubDate>
      <link>https://forem.com/sakshsky_89/repomeld-v11-finally-a-tool-that-knows-what-not-to-include-39kh</link>
      <guid>https://forem.com/sakshsky_89/repomeld-v11-finally-a-tool-that-knows-what-not-to-include-39kh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Stop polluting your AI context with jQuery, Bootstrap, and 47MB of vendor code.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Silent Killer of AI Context
&lt;/h2&gt;

&lt;p&gt;You run a tool to combine your codebase into a single file.&lt;/p&gt;

&lt;p&gt;You paste it into ChatGPT.&lt;/p&gt;

&lt;p&gt;The AI responds with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I see you're using Bootstrap 5.3.0, jQuery 3.6.0, Lodash 4.17.21, Moment.js 2.29.4, and 47 other libraries. Your actual code is 12% of this file."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;You've just wasted 80% of your context window on public libraries the AI already knows.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with "Combine Everything"
&lt;/h2&gt;

&lt;p&gt;Most repo-combining tools are dumb:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They include &lt;code&gt;bootstrap.min.css&lt;/code&gt; (178KB of minified CSS)&lt;/li&gt;
&lt;li&gt;They include &lt;code&gt;jquery.min.js&lt;/code&gt; (87KB of library code)&lt;/li&gt;
&lt;li&gt;They include &lt;code&gt;package-lock.json&lt;/code&gt; (thousands of lines)&lt;/li&gt;
&lt;li&gt;They include every single vendor file you've ever touched&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Your 50KB of actual business logic gets lost in 5MB of noise.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter repomeld 🔥 with Smart Auto-Ignore
&lt;/h2&gt;

&lt;p&gt;repomeld ships with a &lt;strong&gt;curated ignore list&lt;/strong&gt; of 200+ common public libraries and vendor files.&lt;/p&gt;

&lt;p&gt;It automatically excludes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSS Frameworks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bootstrap, Tailwind, Bulma, Foundation, Materialize, Semantic UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;JavaScript Libraries&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;jQuery, Lodash, Moment, Axios, GSAP, Three.js, D3, Chart.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UI Components&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Select2, Flatpickr, DataTables, Toastr, SweetAlert, Lightbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rich Text Editors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Quill, TinyMCE, CKEditor, CodeMirror&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maps &amp;amp; Players&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Leaflet, Mapbox GL, Video.js, Plyr, Swiper, Slick&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Icons&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Font Awesome, RemixIcon, Boxicons, Ionicons, Lucide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Admin Templates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AdminLTE, Metronic, CoreUI, Gentelella&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Build Output&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;dist/, build/, .next/, coverage/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Project Meta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;package.json, README.md, lock files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Your output stays focused on YOUR code.&lt;/strong&gt; 🔥&lt;/p&gt;




&lt;h2&gt;
  
  
  Before &amp;amp; After: The Real Difference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Without smart ignore (other tools):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repomeld_output.txt (4.2 MB)
├── node_modules/jquery/dist/jquery.min.js (87 KB) ❌
├── node_modules/bootstrap/dist/css/bootstrap.min.css (178 KB) ❌
├── node_modules/lodash/lodash.min.js (72 KB) ❌
├── package-lock.json (847 KB) ❌
├── dist/bundle.js (1.2 MB) ❌
└── src/ (your actual 50 KB of code) ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4.2 MB of noise. 1% useful content.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  With repomeld:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repomeld_output.txt (52 KB)
├── src/index.js ✅
├── src/components/Button.js ✅
├── src/utils/helpers.js ✅
└── src/styles/custom.css ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;52 KB of signal. 100% your code.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  But What If I Need a Vendor File?
&lt;/h2&gt;

&lt;p&gt;Good question! Sometimes you've &lt;strong&gt;customized&lt;/strong&gt; a library and need to include it.&lt;/p&gt;

&lt;p&gt;repomeld has you covered with &lt;code&gt;--force-include&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Include your customized Bootstrap even though it's normally ignored&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--force-include&lt;/span&gt; bootstrap

&lt;span class="c"&gt;# Include multiple overrides&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--force-include&lt;/span&gt; jquery vendor bootstrap

&lt;span class="c"&gt;# Combine with other options&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--force-include&lt;/span&gt; select2 &lt;span class="nt"&gt;--style&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; context.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--force-include&lt;/code&gt; matches by name substring, so &lt;code&gt;--force-include bootstrap&lt;/code&gt; un-ignores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bootstrap.min.css&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bootstrap.bundle.min.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bootstrap-icons.css&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Any file with "bootstrap" in the name&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Customize Your Own Ignore List
&lt;/h2&gt;

&lt;p&gt;Place a &lt;code&gt;repomeld.ignore.json&lt;/code&gt; in your project root to override or extend the built-in list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&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;"ignore"&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;"my-custom-vendor-folder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"generated-report.html"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"legacy-library.js"&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;repomeld looks for config in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your project's &lt;code&gt;repomeld.ignore.json&lt;/code&gt; (overrides everything)&lt;/li&gt;
&lt;li&gt;Built-in &lt;code&gt;repomeld.ignore.json&lt;/code&gt; (200+ common libs)&lt;/li&gt;
&lt;li&gt;Hardcoded defaults (always skip binaries, .git, node_modules)&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What Gets Auto-Ignored (Full Categories)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📦 Package Managers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node_modules/&lt;/code&gt;, &lt;code&gt;bower_components/&lt;/code&gt;, &lt;code&gt;vendor/&lt;/code&gt;, &lt;code&gt;libs/&lt;/code&gt;, &lt;code&gt;plugins/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package-lock.json&lt;/code&gt;, &lt;code&gt;yarn.lock&lt;/code&gt;, &lt;code&gt;pnpm-lock.yaml&lt;/code&gt;, &lt;code&gt;composer.lock&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 CSS Frameworks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bootstrap, Tailwind, Bulma, Foundation, Materialize, Semantic UI, UIkit, Pure.css, Milligram, Skeleton, Tachyons&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ JavaScript Libraries
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;jQuery, Zepto, Lodash, Underscore, Moment, Day.js, Axios, SuperAgent, Request, Fetch polyfill&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎮 Animation &amp;amp; Graphics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GSAP, Three.js, D3.js, Chart.js, ApexCharts, ECharts, Anime.js, Velocity.js, Mo.js, P5.js, CanvasJS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖼️ UI Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Select2, Flatpickr, Datepicker, Choices.js, Tom Select, DataTables, ag-Grid, Handsontable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔔 Notifications &amp;amp; Alerts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Toastr, Noty, SweetAlert, PNotify, Notie, Alertify&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📝 Rich Text Editors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Quill, TinyMCE, CKEditor, CodeMirror, Ace Editor, Monaco Editor, Summernote, Froala Editor&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖱️ Carousels &amp;amp; Sliders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Swiper, Slick, Owl Carousel, Flickity, Glide.js, Splide&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🗺️ Maps &amp;amp; Geospatial
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Leaflet, Mapbox GL, Google Maps API, OpenLayers, Cesium&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎥 Video &amp;amp; Audio Players
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Video.js, Plyr, JW Player, MediaElement.js, Howler.js, Wavesurfer.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔧 Utilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Lazysizes, Lottie, Particles.js, Typed.js, SortableJS, Masonry, Isotope, Packery, imagesLoaded, Clipboard.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖌️ Syntax Highlighting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prism.js, Highlight.js, Rainbow, Prettify&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📊 Icons &amp;amp; Fonts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Font Awesome, RemixIcon, Boxicons, Ionicons, Lucide, Feather Icons, Heroicons, Material Icons, Bootstrap Icons&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🏗️ Admin &amp;amp; Dashboard Templates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AdminLTE, Metronic, CoreUI, Gentelella, Tabler, Volt, Argon, Now UI, Paper Dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔨 Build Artifacts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dist/&lt;/code&gt;, &lt;code&gt;build/&lt;/code&gt;, &lt;code&gt;.next/&lt;/code&gt;, &lt;code&gt;.nuxt/&lt;/code&gt;, &lt;code&gt;.output/&lt;/code&gt;, &lt;code&gt;coverage/&lt;/code&gt;, &lt;code&gt;.nyc_output/&lt;/code&gt;, &lt;code&gt;.cache/&lt;/code&gt;, &lt;code&gt;.parcel-cache/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📄 Meta Files
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;README.md&lt;/code&gt;, &lt;code&gt;LICENSE&lt;/code&gt;, &lt;code&gt;CHANGELOG.md&lt;/code&gt;, &lt;code&gt;.gitignore&lt;/code&gt;, &lt;code&gt;.dockerignore&lt;/code&gt;, &lt;code&gt;.eslintrc&lt;/code&gt;, &lt;code&gt;.prettierrc&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔐 Environment &amp;amp; Secrets
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.local&lt;/code&gt;, &lt;code&gt;.env.production&lt;/code&gt;, &lt;code&gt;.env.development&lt;/code&gt;, &lt;code&gt;.secret&lt;/code&gt;, &lt;code&gt;.key&lt;/code&gt;, &lt;code&gt;.pem&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💾 Binaries &amp;amp; Media
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;*.jpg&lt;/code&gt;, &lt;code&gt;*.png&lt;/code&gt;, &lt;code&gt;*.gif&lt;/code&gt;, &lt;code&gt;*.svg&lt;/code&gt; (except inline), &lt;code&gt;*.woff&lt;/code&gt;, &lt;code&gt;*.woff2&lt;/code&gt;, &lt;code&gt;*.ttf&lt;/code&gt;, &lt;code&gt;*.eot&lt;/code&gt;, &lt;code&gt;*.ico&lt;/code&gt;, &lt;code&gt;*.pdf&lt;/code&gt;, &lt;code&gt;*.zip&lt;/code&gt;, &lt;code&gt;*.tar.gz&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real-World Example: React + Bootstrap Project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Project structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-app/
├── node_modules/ (300+ libraries, 150MB)
├── public/
│   └── bootstrap.min.css (178KB)
├── src/
│   ├── components/
│   ├── hooks/
│   └── utils/
└── package-lock.json (847KB)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Running repomeld:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;repomeld &lt;span class="nt"&gt;--style&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; context.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output file:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ No &lt;code&gt;node_modules/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;❌ No &lt;code&gt;bootstrap.min.css&lt;/code&gt; (it's a public CDN library)&lt;/li&gt;
&lt;li&gt;❌ No &lt;code&gt;package-lock.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Only &lt;code&gt;src/&lt;/code&gt; folder contents&lt;/li&gt;
&lt;li&gt;✅ File size: 48KB instead of 151MB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; ChatGPT sees only your React components, hooks, and utilities – not the 150MB of noise.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for AI
&lt;/h2&gt;

&lt;p&gt;AI models have &lt;strong&gt;context windows&lt;/strong&gt; (token limits):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;Approx. chars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-3.5&lt;/td&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;td&gt;~3,000 words&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4&lt;/td&gt;
&lt;td&gt;8K-32K&lt;/td&gt;
&lt;td&gt;~6,000-24,000 words&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3&lt;/td&gt;
&lt;td&gt;200K&lt;/td&gt;
&lt;td&gt;~150,000 words&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 1.5&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;~750,000 words&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Every token counts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you waste 80% of your context on jQuery and Bootstrap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Less room for your actual code&lt;/li&gt;
&lt;li&gt;More irrelevant information for the AI&lt;/li&gt;
&lt;li&gt;Worse answers, more hallucinations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;repomeld ensures &lt;strong&gt;100% of your context window contains YOUR code.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Contribute to the Ignore List
&lt;/h2&gt;

&lt;p&gt;Found a popular library that should be ignored by default?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open a PR!&lt;/strong&gt; Add it to &lt;code&gt;repomeld.ignore.json&lt;/code&gt; and help the community:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&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;"ignore"&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;"your-new-library.min.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"some-common-cdn.css"&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;The more we add, the smarter repomeld becomes for everyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld

&lt;span class="c"&gt;# Run in your project (auto-ignores 200+ libraries)&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
repomeld

&lt;span class="c"&gt;# Check what gets ignored&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--dry-run&lt;/span&gt;

&lt;span class="c"&gt;# Force-include a library you've customized&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--force-include&lt;/span&gt; bootstrap

&lt;span class="c"&gt;# Use your own ignore list&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'{"ignore": ["custom-vendor"]}'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; repomeld.ignore.json
repomeld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Don't let vendor noise kill your AI context.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;repomeld ships with 200+ smart ignores so your output stays focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Your business logic&lt;/li&gt;
&lt;li&gt;✅ Your components&lt;/li&gt;
&lt;li&gt;✅ Your unique code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ jQuery (the AI already knows it)&lt;/li&gt;
&lt;li&gt;❌ Bootstrap (the AI already knows it)&lt;/li&gt;
&lt;li&gt;❌ 150MB of node_modules (the AI doesn't need it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Clean context. Better answers. Faster debugging.&lt;/strong&gt; 🔥&lt;/p&gt;




&lt;h2&gt;
  
  
  Try repomeld Today
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
repomeld &lt;span class="nt"&gt;--style&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; clean_context.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then paste it into ChatGPT or Claude and ask:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Based ONLY on my code (not the libraries), what's the biggest improvement I can make?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You'll get answers about YOUR code. Not about Bootstrap.&lt;/strong&gt; 🎯&lt;/p&gt;




&lt;h2&gt;
  
  
  Tags for dev.to:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ai&lt;/code&gt;, &lt;code&gt;productivity&lt;/code&gt;, &lt;code&gt;javascript&lt;/code&gt;, &lt;code&gt;nodejs&lt;/code&gt;, &lt;code&gt;chatgpt&lt;/code&gt;, &lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;opensource&lt;/code&gt;, &lt;code&gt;tooling&lt;/code&gt;, &lt;code&gt;clean-code&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>claude</category>
    </item>
    <item>
      <title>I built reqscan — a zero-dependency CLI to manage your Node.js dependencies</title>
      <dc:creator>sakshsky</dc:creator>
      <pubDate>Mon, 13 Apr 2026 09:18:28 +0000</pubDate>
      <link>https://forem.com/sakshsky_89/i-built-reqscan-a-zero-dependency-cli-to-manage-your-nodejs-dependencies-47nl</link>
      <guid>https://forem.com/sakshsky_89/i-built-reqscan-a-zero-dependency-cli-to-manage-your-nodejs-dependencies-47nl</guid>
      <description>&lt;p&gt;Ever opened a Node.js project, ran it, and got hit with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Cannot find module 'axios'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You check &lt;code&gt;package.json&lt;/code&gt;. It's not there. You add it. Then five minutes later, a different file throws the same error for a different package. You repeat the process three more times before the app actually starts.&lt;/p&gt;

&lt;p&gt;Or the opposite: your &lt;code&gt;package.json&lt;/code&gt; has 40 entries and you're pretty sure half of them haven't been imported anywhere in months — but you don't want to manually grep through 200 files to find out.&lt;/p&gt;

&lt;p&gt;I got tired of this. So I built &lt;strong&gt;reqscan&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is reqscan?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;reqscan&lt;/strong&gt; is a zero-dependency CLI tool that scans your Node.js project, finds every package you're importing across all your source files, and compares it against your &lt;code&gt;package.json&lt;/code&gt;. It tells you exactly what's missing, what's unused, and lets you fix everything in one command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx reqscan check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Point it at any project and it gives you the full picture.&lt;/p&gt;




&lt;h2&gt;
  
  
  A real example
&lt;/h2&gt;

&lt;p&gt;Say you have a project with these files scattered around:&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="c1"&gt;// src/api.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;axios&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;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;v4&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;uuidv4&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;uuid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// src/db.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mongoose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongoose&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// lib/utils.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;format&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;date-fns&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;User&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;@myorg/types&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;And your &lt;code&gt;package.json&lt;/code&gt; only declares &lt;code&gt;mongoose&lt;/code&gt; and &lt;code&gt;jest&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;reqscan check&lt;/code&gt; gives you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;📦 Project: my-app
──────────────────────────────────────────────────
Summary
  Total imports found   : 5
  Declared in pkg.json  : 2
  Already installed     : 1
  Missing (not declared): 4

❌ Missing Packages (not in package.json)
──────────────────────────────────────────────────
  ✗ axios
  ✗ uuid
  ✗ date-fns
  ✗ @myorg/types

💡 Run this to install all missing packages:
   npm install axios uuid date-fns @myorg/types

✅ Already Declared Packages
──────────────────────────────────────────────────
  ✓ mongoose   ^7.0.0

⚠️  Declared but NOT imported in source (possibly unused)
──────────────────────────────────────────────────
  ~ jest (devDependencies)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx reqscan &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. All four packages installed in one shot.&lt;/p&gt;




&lt;h2&gt;
  
  
  The commands
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan check&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scan and report — missing, present, unused&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan install&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install all missing packages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan clean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove declared-but-never-imported packages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan fix&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install missing + clean unused in one go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan audit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full health report with a score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reqscan list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Every dependency with its current status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The one I use most day-to-day is &lt;code&gt;reqscan fix&lt;/code&gt;. Drop into any project, run it, and your dependencies are clean.&lt;/p&gt;




&lt;h2&gt;
  
  
  What it detects
&lt;/h2&gt;

&lt;p&gt;reqscan understands every import style you'd encounter in a modern JS/TS codebase:&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="c1"&gt;// CommonJS&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;some-pkg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ESM&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;something&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;lodash&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;ns&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;ramda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&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;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Side-effect imports&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;reflect-metadata&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Dynamic imports&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dynamic-pkg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// TypeScript type imports (still a real dependency!)&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;User&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;@myorg/types&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Config&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;some-lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Re-exports&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;helper&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;shared-utils&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;It also strips comments before scanning, so commented-out imports don't generate false positives. Scoped packages (&lt;code&gt;@babel/core&lt;/code&gt;) and subpath imports (&lt;code&gt;date-fns/format&lt;/code&gt; → &lt;code&gt;date-fns&lt;/code&gt;) are both handled correctly.&lt;/p&gt;

&lt;p&gt;Built-ins (&lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;path&lt;/code&gt;, &lt;code&gt;node:crypto&lt;/code&gt;, etc.) are filtered out automatically. So are &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;.next&lt;/code&gt;, and the other usual suspects.&lt;/p&gt;




&lt;h2&gt;
  
  
  Flags that make it CI-friendly
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Preview what would change — no files touched&lt;/span&gt;
reqscan fix &lt;span class="nt"&gt;--dry-run&lt;/span&gt;

&lt;span class="c"&gt;# Install missing packages as devDependencies&lt;/span&gt;
reqscan &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt;

&lt;span class="c"&gt;# Remove unused without the confirmation prompt (great for scripts)&lt;/span&gt;
reqscan clean &lt;span class="nt"&gt;--force&lt;/span&gt;

&lt;span class="c"&gt;# Machine-readable output for tooling&lt;/span&gt;
reqscan audit &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--json&lt;/code&gt; flag is particularly useful if you want to build on top of reqscan — pipe it into another tool, write it to a file, diff it across branches, whatever.&lt;/p&gt;




&lt;h2&gt;
  
  
  Use it programmatically
&lt;/h2&gt;

&lt;p&gt;reqscan also exposes a clean API if you want to integrate it into your own tooling:&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;scanProject&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;reqscan&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;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;scanProject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./my-app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;missing&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// ['axios', 'uuid']&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;unused&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;    &lt;span class="c1"&gt;// ['jest']&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;present&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// ['express', 'mongoose']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zero config, returns plain arrays. Easy to plug into a custom script, a GitHub Action, or a monorepo tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  Zero dependencies
&lt;/h2&gt;

&lt;p&gt;The whole thing is zero external dependencies. No third-party parsers, no &lt;code&gt;commander&lt;/code&gt;, no &lt;code&gt;chalk&lt;/code&gt;. The bundle is just the source files — under 300 lines of scanner logic, a small color helper that respects &lt;code&gt;NO_COLOR&lt;/code&gt; and non-TTY environments, and the CLI entry point.&lt;/p&gt;

&lt;p&gt;That means it installs instantly, works anywhere Node ≥ 14 runs, and won't pollute your &lt;code&gt;node_modules&lt;/code&gt; with its own transitive deps.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Global (recommended for everyday use):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; reqscan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Or just use npx — no install needed:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx reqscan check
npx reqscan fix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Or add it to a project for CI:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; reqscan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&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;"scripts"&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;"deps:check"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reqscan check"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deps:fix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reqscan fix --force"&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;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;A few things on the roadmap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;reqscan outdated&lt;/code&gt; — surface packages with newer versions available&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reqscan upgrade&lt;/code&gt; — update outdated packages interactively&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.reqscanrc&lt;/code&gt; config file for per-project ignore lists&lt;/li&gt;
&lt;li&gt;Monorepo / workspace support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a use case reqscan doesn't handle, or hit a false positive/negative on a pattern it's not detecting, open an issue. Real-world projects have edge cases I haven't seen yet.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/reqscan" rel="noopener noreferrer"&gt;npmjs.com/package/reqscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give it a try and let me know what you think in the comments. And if it saves you time, a ⭐ on GitHub goes a long way.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>node</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>repomeld – Meld Your Entire Repo Into a Single File</title>
      <dc:creator>sakshsky</dc:creator>
      <pubDate>Mon, 13 Apr 2026 06:59:11 +0000</pubDate>
      <link>https://forem.com/sakshsky_89/repomeld-meld-your-entire-repo-into-a-single-file-31j8</link>
      <guid>https://forem.com/sakshsky_89/repomeld-meld-your-entire-repo-into-a-single-file-31j8</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;You're about to paste code into ChatGPT, Claude, or Gemini. But your project has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20+ files&lt;/li&gt;
&lt;li&gt;Nested folders&lt;/li&gt;
&lt;li&gt;Complex logic spread everywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do you paste &lt;strong&gt;one file at a time&lt;/strong&gt;?&lt;br&gt;&lt;br&gt;
Do you explain the folder structure manually?&lt;br&gt;&lt;br&gt;
Do you hope the AI understands how everything connects?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's a better way.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Meet repomeld 🔥
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;repomeld&lt;/code&gt; combines your &lt;strong&gt;entire repository&lt;/strong&gt; into a single, well-formatted file – perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🤖 &lt;strong&gt;AI context injection&lt;/strong&gt; – Paste once, get better answers&lt;/li&gt;
&lt;li&gt;👥 &lt;strong&gt;Code reviews&lt;/strong&gt; – Share everything in one go&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Documentation&lt;/strong&gt; – Generate readable snapshots&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;Archiving&lt;/strong&gt; – Preserve project state&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Quick Demo
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; repomeld

&lt;span class="c"&gt;# Navigate to your project&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;your-awesome-project

&lt;span class="c"&gt;# Run repomeld&lt;/span&gt;
repomeld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;That's it.&lt;/strong&gt; You'll get a &lt;code&gt;repomeld_output.txt&lt;/code&gt; file containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Generated by repomeld v1.0.0
# Date     : 2024-01-15T10:30:00.000Z
# Source   : /your-awesome-project
# Files    : 24
# Lines    : 1842

TABLE OF CONTENTS
════════════════════════════════════════════════════════════
    1. src/index.ts
    2. src/utils/helpers.ts
    3. src/components/Button.tsx
    ...

────────────────────────────────────────────────────────────
  FILE: src/index.ts  [127 lines | 3.2 KB | typescript]
────────────────────────────────────────────────────────────

// Your actual code here...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why repomeld?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;repomeld&lt;/th&gt;
&lt;th&gt;Manual copy-paste&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Table of contents&lt;/td&gt;
&lt;td&gt;✅ Auto-generated&lt;/td&gt;
&lt;td&gt;❌ Manual work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File metadata (lines, size)&lt;/td&gt;
&lt;td&gt;✅ Included&lt;/td&gt;
&lt;td&gt;❌ Not included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Binary file filtering&lt;/td&gt;
&lt;td&gt;✅ Smart skip&lt;/td&gt;
&lt;td&gt;❌ Messy output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large file limits&lt;/td&gt;
&lt;td&gt;✅ Configurable&lt;/td&gt;
&lt;td&gt;❌ Paste bombs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple output styles&lt;/td&gt;
&lt;td&gt;✅ 3 styles&lt;/td&gt;
&lt;td&gt;❌ Plain text only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dry-run preview&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Advanced Usage
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Focus on specific file types
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Only JS/TS files&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--ext&lt;/span&gt; js ts jsx tsx

&lt;span class="c"&gt;# Only files in src/&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--include&lt;/span&gt; src/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Exclude what you don't need
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Skip test files and large folders&lt;/span&gt;
repomeld &lt;span class="nt"&gt;--exclude&lt;/span&gt; &lt;span class="nb"&gt;test &lt;/span&gt;spec __tests__ &lt;span class="nt"&gt;--ignore&lt;/span&gt; dist .next
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Markdown output (great for AI prompts)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;repomeld &lt;span class="nt"&gt;--style&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; context.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates beautifully formatted markdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## 📄 src/index.ts  [127 lines | 3.2 KB | typescript]&lt;/span&gt;

&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;
typescript
// Your code here


&lt;span class="p"&gt;```&lt;/span&gt;
&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;
&lt;/span&gt;
`

### 4. Minimal style for quick sharing

```bash
repomeld --style minimal --no-toc
```

### 5. Preview without generating a file

```bash
repomeld --dry-run
# Shows: Would include 42 files (1.2 MB total)
```

### 6. Trim whitespace &amp;amp; skip lines

```bash
# Clean up files and remove headers/footers
repomeld --trim --lines-before 5 --lines-after 5
```

---

## What repomeld Auto-Ignores (So You Don't Have To)

- `node_modules/`, `.git/`, `dist/`, `build/`
- `.env`, `package-lock.json`, `yarn.lock`
- Binary files (images, executables)
- The output file itself (no infinite recursion!)

---

## Real-World Use Cases

### 🤖 **AI Code Assistant**
```bash
repomeld --style markdown --output ai_context.md
# Paste entire file → Ask "Add error handling to all functions"
# AI sees EVERYTHING. Gets EVERYTHING right.
```

### 👥 **Code Review on Slack/Discord**
```bash
repomeld --style minimal --no-toc --output review.txt
# Share one file. Reviewers scroll once.
```

### 📦 **Project Archiving**
```bash
repomeld --output archive_2024_01_15.txt
# Snapshot your entire codebase before major refactor
```

### 🔍 **Bug Reproduction**
```bash
repomeld --include src/ --exclude test --output bug_context.txt
# Attach to GitHub issue. No more "can you share more files?"
```

---

## Performance &amp;amp; Limits

- **Default max file size**: 500 KB (configurable)
- **Binary files**: Auto-skipped
- **Large repos**: Tested on 10k+ file projects

```bash
# Increase limit to 2 MB per file
repomeld --max-size 2000
```

---

## Installation Options

```bash
# Global install (recommended)
npm install -g repomeld

# Or run without installing
npx repomeld
```

---

## What Developers Are Saying

&amp;gt; "Finally, a tool that understands how developers actually use AI. repomeld saved me hours of manual file copying."  
&amp;gt; *– Senior Dev at SaaS startup*

&amp;gt; "The markdown output is *chef's kiss*. My AI coding sessions are 10x more productive now."  
&amp;gt; *– Open Source Contributor*

---

## Roadmap

- [ ] `.repomeldignore` file support
- [ ] ZIP output option
- [ ] Tree view visualization
- [ ] Git diff integration (only changed files)
- [ ] VS Code extension

---

## Contribute &amp;amp; Feedback

- 🐛 **Issues**: [GitHub Issues](https://github.com/yourusername/repomeld/issues)
- 💡 **Ideas**: Open a discussion
- ⭐ **Love it?**: Star the repo

---

## License

MIT – Use it anywhere, for anything.

---

## Get Started Now

```bash
npm install -g repomeld
cd your-project
repomeld
```

**That's 3 commands. Your entire codebase. One file. 🔥**

---

*Made for developers who talk to AI. Built with TypeScript. Works everywhere Node.js runs.*

---

## Tips for publishing on dev.to:

1. **Add a cover image** – Create a simple banner with "repomeld 🔥" and "Meld your entire repo into a single file"
2. **Use the canonical URL** – Link back to your GitHub repo
3. **Add tags**: `showdev`, `javascript`, `productivity`, `opensource`
4. **Include a "Try it now" button** – Use dev.to's button feature if available
5. **Embed a demo GIF** – Show repomeld in action (record terminal session)
6. **Cross-post** – Share on Twitter, LinkedIn, Reddit r/node, r/programming

The article is conversational, benefit-focused, and shows real value immediately – perfect for dev.to's audience! 🚀
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
