<?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: Bobo</title>
    <description>The latest articles on DEV Community by Bobo (@lb1192176991lab).</description>
    <link>https://dev.to/lb1192176991lab</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%2F3949270%2Fdba8c138-e15f-4345-9317-34842d3b60bc.png</url>
      <title>DEV Community: Bobo</title>
      <link>https://dev.to/lb1192176991lab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lb1192176991lab"/>
    <language>en</language>
    <item>
      <title>Validate JSON Like a Pro: Catch Syntax Errors Before They Break Your App</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Sat, 13 Jun 2026 17:12:20 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/validate-json-like-a-pro-catch-syntax-errors-before-they-break-your-app-562a</link>
      <guid>https://dev.to/lb1192176991lab/validate-json-like-a-pro-catch-syntax-errors-before-they-break-your-app-562a</guid>
      <description>&lt;h1&gt;
  
  
  Validate JSON Like a Pro: Catch Syntax Errors Before They Break Your App
&lt;/h1&gt;

&lt;p&gt;A single missing comma in a JSON config file can take down your entire application. Here's how to validate JSON files before they cause damage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install json-tidy
&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; json-tidy-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Validate Single File
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;json-tidy validate config.json
&lt;span class="c"&gt;# ✅ Valid JSON!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Validate Multiple Files
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;json-tidy validate config/&lt;span class="k"&gt;*&lt;/span&gt;.json
&lt;span class="c"&gt;# ✅ config.json: Valid&lt;/span&gt;
&lt;span class="c"&gt;# ❌ database.json: Invalid - missing comma at line 42&lt;/span&gt;
&lt;span class="c"&gt;# ✅ routes.json: Valid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Integrate into Git Hooks
&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;# .git/hooks/pre-commit&lt;/span&gt;
&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
npx json-tidy validate config/&lt;span class="k"&gt;*&lt;/span&gt;.json
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; &lt;span class="nt"&gt;-ne&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"❌ Invalid JSON detected. Fix before committing."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Integrate into CI/CD
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/validate.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Validate JSON&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;validate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx json-tidy validate ./config/**/*.json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common JSON Errors json-tidy Catches
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Missing commas in objects and arrays&lt;/li&gt;
&lt;li&gt;Trailing commas (not allowed in strict JSON)&lt;/li&gt;
&lt;li&gt;Unquoted property names&lt;/li&gt;
&lt;li&gt;Single quotes instead of double quotes&lt;/li&gt;
&lt;li&gt;Comments (not valid in JSON)&lt;/li&gt;
&lt;li&gt;Extra trailing content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install
&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; json-tidy-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;🎪 &lt;strong&gt;Visit us&lt;/strong&gt;: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;https://www.tucaowall.vip/&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;Get free DigitalOcean credit&lt;/strong&gt;: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;https://m.do.co/c/fc5cb7b29a0d&lt;/a&gt;&lt;br&gt;
🔧 &lt;strong&gt;CLI Toolkit Pro&lt;/strong&gt; - Unified CLI for devs: &lt;a href="https://bobotempes.gumroad.com/l/nmcqjr" rel="noopener noreferrer"&gt;Buy $9.99&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have a JSON horror story? Share it in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>json</category>
      <category>devops</category>
    </item>
    <item>
      <title>json-tidy: Stop Manually Formatting JSON Files</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Sat, 13 Jun 2026 17:05:02 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/json-tidy-stop-manually-formatting-json-files-3088</link>
      <guid>https://dev.to/lb1192176991lab/json-tidy-stop-manually-formatting-json-files-3088</guid>
      <description>&lt;h2&gt;
  
  
  JSON Shouldn't Be a Chore
&lt;/h2&gt;

&lt;p&gt;Every developer has been there: you copypaste JSON into an online formatter, hit format, copypaste back. Then you wonder "why is there no CLI for this?"&lt;/p&gt;

&lt;p&gt;There is now.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx json-tidy-pro format messy.json
npx json-tidy-pro validate config.json
npx json-tidy-pro minify data.json
npx json-tidy-pro convert data.json &lt;span class="nt"&gt;--to&lt;/span&gt; yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Format &amp;amp; Beautify
&lt;/h3&gt;

&lt;p&gt;Indent properly, sort keys, colorize output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Validate
&lt;/h3&gt;

&lt;p&gt;Check structure, detect duplicate keys, validate against a schema.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minify
&lt;/h3&gt;

&lt;p&gt;Condense JSON to one line for API payloads and storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Convert
&lt;/h3&gt;

&lt;p&gt;JSON → YAML, JSON → CSV, JSON → TOML.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&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; json-tidy-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/json-tidy-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/json-tidy" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>json</category>
      <category>cli</category>
    </item>
    <item>
      <title>How to Convert Excel Files to CSV and JSON Programmatically</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Fri, 12 Jun 2026 17:39:07 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/how-to-convert-excel-files-to-csv-and-json-programmatically-4l4f</link>
      <guid>https://dev.to/lb1192176991lab/how-to-convert-excel-files-to-csv-and-json-programmatically-4l4f</guid>
      <description>&lt;h1&gt;
  
  
  How to Convert Excel Files to CSV and JSON Programmatically
&lt;/h1&gt;

&lt;p&gt;Excel files are everywhere. But most programs work better with CSV or JSON. Here's how to bridge the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: CLI (Fastest)
&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; csv-toolkit-pro

&lt;span class="c"&gt;# Excel to CSV&lt;/span&gt;
csv-toolkit-pro convert input.xlsx &lt;span class="nt"&gt;-o&lt;/span&gt; output.csv

&lt;span class="c"&gt;# Excel to JSON (via CSV)&lt;/span&gt;
csv-toolkit-pro convert input.xlsx &lt;span class="nt"&gt;-o&lt;/span&gt; temp.csv
csv-toolkit-pro convert temp.csv &lt;span class="nt"&gt;-o&lt;/span&gt; output.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Method 2: REST API
&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; csv-api
csv-api &lt;span class="nt"&gt;--port&lt;/span&gt; 3000 &amp;amp;

curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:3000/convert   &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@report.xlsx"&lt;/span&gt;   &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"format=csv"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Method 3: Programmatic
&lt;/h2&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;csvToolkit&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;csv-toolkit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Convert Excel to CSV&lt;/span&gt;
&lt;span class="nx"&gt;csvToolkit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;report.xlsx&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;report.csv&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;h2&gt;
  
  
  One-Liner Conversion
&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;# Convert all Excel files in a folder&lt;/span&gt;
csv-toolkit-pro convert ./excel_files/&lt;span class="k"&gt;*&lt;/span&gt;.xlsx &lt;span class="nt"&gt;-o&lt;/span&gt; ./csv_files/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Supported Formats
&lt;/h2&gt;

&lt;p&gt;csv-toolkit supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.xlsx (Excel 2007+)&lt;/li&gt;
&lt;li&gt;.xls (Excel 97-2003)&lt;/li&gt;
&lt;li&gt;.csv&lt;/li&gt;
&lt;li&gt;.tsv&lt;/li&gt;
&lt;li&gt;.json&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install
&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; csv-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;🎪 &lt;strong&gt;Visit us&lt;/strong&gt;: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;https://www.tucaowall.vip/&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;Get free DigitalOcean credit&lt;/strong&gt;: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;https://m.do.co/c/fc5cb7b29a0d&lt;/a&gt;&lt;br&gt;
🔧 &lt;strong&gt;CLI Toolkit Pro&lt;/strong&gt; - Unified CLI for devs: &lt;a href="https://bobotempes.gumroad.com/l/nmcqjr" rel="noopener noreferrer"&gt;Buy $9.99&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How do you handle Excel conversions? Share your workflow!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>csv</category>
      <category>excel</category>
    </item>
    <item>
      <title>csv-toolkit: The CSV/Excel Swiss Army Knife You Didn't Know You Needed</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Fri, 12 Jun 2026 17:37:17 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/csv-toolkit-the-csvexcel-swiss-army-knife-you-didnt-know-you-needed-p7m</link>
      <guid>https://dev.to/lb1192176991lab/csv-toolkit-the-csvexcel-swiss-army-knife-you-didnt-know-you-needed-p7m</guid>
      <description>&lt;h2&gt;
  
  
  Why Another CSV Tool?
&lt;/h2&gt;

&lt;p&gt;There are a thousand CSV parsers in Node.js. So why build another one?&lt;/p&gt;

&lt;p&gt;Because I got tired of writing the same 20-line script every time someone asked me to "just merge these 12 CSV files" or "remove duplicates from this export."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;csv-toolkit-pro&lt;/strong&gt; is the CLI tool I wish existed: one command, zero config, and it just works.&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;npx csv-toolkit-pro merge file1.csv file2.csv &lt;span class="nt"&gt;-o&lt;/span&gt; merged.csv
npx csv-toolkit-pro clean messy.csv &lt;span class="nt"&gt;--dedup&lt;/span&gt; &lt;span class="nt"&gt;--strip-whitespace&lt;/span&gt;
npx csv-toolkit-pro analyze sales.csv &lt;span class="nt"&gt;--stats&lt;/span&gt;
npx csv-toolkit-pro convert data.csv &lt;span class="nt"&gt;--to&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install once, use everywhere:&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; csv-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Merge
&lt;/h3&gt;

&lt;p&gt;Combine multiple CSVs with matching columns into one file. Handles encoding, header mismatches, and large files (100k+ rows) without breaking a sweat.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clean
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Remove duplicate rows&lt;/li&gt;
&lt;li&gt;Strip whitespace and fix encoding&lt;/li&gt;
&lt;li&gt;Filter by column values&lt;/li&gt;
&lt;li&gt;Fill missing values&lt;/li&gt;
&lt;li&gt;Normalize date formats&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Analyze
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Column statistics (min, max, avg, count, nulls)&lt;/li&gt;
&lt;li&gt;Value distribution&lt;/li&gt;
&lt;li&gt;File size and row count&lt;/li&gt;
&lt;li&gt;Export summary as JSON&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Convert
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CSV → JSON&lt;/li&gt;
&lt;li&gt;CSV → Markdown table&lt;/li&gt;
&lt;li&gt;CSV → Excel (.xlsx)&lt;/li&gt;
&lt;li&gt;JSON → CSV&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Use It?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Without csv-toolkit&lt;/th&gt;
&lt;th&gt;With csv-toolkit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Merge 5 CSVs&lt;/td&gt;
&lt;td&gt;30 min (write script)&lt;/td&gt;
&lt;td&gt;3 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean export data&lt;/td&gt;
&lt;td&gt;15 min (Excel + formulas)&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analyze sales data&lt;/td&gt;
&lt;td&gt;20 min (pivot table)&lt;/td&gt;
&lt;td&gt;5 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Convert to JSON&lt;/td&gt;
&lt;td&gt;10 min (write code)&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Excel Support
&lt;/h2&gt;

&lt;p&gt;Version 1.1+ includes full .xlsx support:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;csv-toolkit-pro convert data.xlsx &lt;span class="nt"&gt;--to&lt;/span&gt; csv
csv-toolkit-pro merge data.xlsx report.csv &lt;span class="nt"&gt;-o&lt;/span&gt; combined.xlsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Installation
&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;# Global install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; csv-toolkit-pro

&lt;span class="c"&gt;# Or use without install&lt;/span&gt;
npx csv-toolkit-pro &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/csv-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lb1192176991-lab/csv-toolkit" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/csv-toolkit/issues" rel="noopener noreferrer"&gt;Report issues&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>csv</category>
      <category>cli</category>
    </item>
    <item>
      <title>Introducing CLI Toolkit Pro: 8 CLI Tools in One Package</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Thu, 11 Jun 2026 16:57:32 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/introducing-cli-toolkit-pro-8-cli-tools-in-one-package-419c</link>
      <guid>https://dev.to/lb1192176991lab/introducing-cli-toolkit-pro-8-cli-tools-in-one-package-419c</guid>
      <description>&lt;h2&gt;
  
  
  One CLI to Rule Them All
&lt;/h2&gt;

&lt;p&gt;I maintain 8 individual CLI tools (csv-toolkit-pro, json-tidy-pro, batch-image-tool, text-processor-pro, file-batch-toolkit, pdf-toolkit-pro, csv-processing-api-server, creator-automation-bot).&lt;/p&gt;

&lt;p&gt;They're all useful individually. But typing 8 different command names is annoying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI Toolkit Pro&lt;/strong&gt; bundles all of them into one unified interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cli-toolkit-pro csv merge file1.csv file2.csv
npx cli-toolkit-pro json format data.json
npx cli-toolkit-pro image compress ./photos/
npx cli-toolkit-pro text replace ./logs/ &lt;span class="s2"&gt;"old"&lt;/span&gt; &lt;span class="s2"&gt;"new"&lt;/span&gt;
npx cli-toolkit-pro file rename ./downloads/ &lt;span class="nt"&gt;--pattern&lt;/span&gt; &lt;span class="s2"&gt;"doc-{n}"&lt;/span&gt;
npx cli-toolkit-pro pdf merge doc1.pdf doc2.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What's Inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;th&gt;Individual Package&lt;/th&gt;
&lt;th&gt;CLI Toolkit Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CSV/Excel&lt;/td&gt;
&lt;td&gt;csv-toolkit-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit csv ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSON&lt;/td&gt;
&lt;td&gt;json-tidy-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit json ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images&lt;/td&gt;
&lt;td&gt;batch-image-tool&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit image ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;text-processor-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit text ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files&lt;/td&gt;
&lt;td&gt;file-batch-toolkit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit file ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDFs&lt;/td&gt;
&lt;td&gt;pdf-toolkit-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit pdf ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Installation
&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; cli-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/cli-toolkit-pro" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Turn Your CSV Files Into a REST API in 2 Minutes</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Thu, 11 Jun 2026 16:56:57 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/turn-your-csv-files-into-a-rest-api-in-2-minutes-3097</link>
      <guid>https://dev.to/lb1192176991lab/turn-your-csv-files-into-a-rest-api-in-2-minutes-3097</guid>
      <description>&lt;h2&gt;
  
  
  CSV as a Service
&lt;/h2&gt;

&lt;p&gt;Sometimes you don't want a CLI. You want an API. You want to upload a CSV, do something to it, and get the result back programmatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;csv-processing-api-server&lt;/strong&gt; gives you exactly that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx csv-processing-api-server
&lt;span class="c"&gt;# Server running on http://localhost:3030&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then make API calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:3030/api/clean &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@messy.csv"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"options={&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;dedup&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: true}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  API Endpoints
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&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;POST /api/clean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upload + clean (dedup, strip whitespace, fill nulls)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /api/convert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CSV → JSON, CSV → Excel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /api/analyze&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Column stats, distribution, summaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/health&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Server status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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; csv-processing-api-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/csv-processing-api-server" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/csv-api" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>csv</category>
      <category>api</category>
    </item>
    <item>
      <title>text-processor: The Find-and-Replace Tool That Handles 1000 Files at Once</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Thu, 11 Jun 2026 16:54:52 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/text-processor-the-find-and-replace-tool-that-handles-1000-files-at-once-1hkp</link>
      <guid>https://dev.to/lb1192176991lab/text-processor-the-find-and-replace-tool-that-handles-1000-files-at-once-1hkp</guid>
      <description>&lt;h1&gt;
  
  
  text-processor: The Find-and-Replace Tool That Handles 1000 Files at Once
&lt;/h1&gt;

&lt;p&gt;Remember when you had to update a copyright year across your entire website? Or replace a deprecated API call in 500 source files? text-processor handles it in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&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; text-processor-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bulk Find and Replace
&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;# Update copyright year across all HTML files&lt;/span&gt;
text-processor replace &lt;span class="s2"&gt;"*.html"&lt;/span&gt; &lt;span class="s2"&gt;"Copyright 2025"&lt;/span&gt; &lt;span class="s2"&gt;"Copyright 2026"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Extract Lines Matching a Pattern
&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;# Extract all error messages from logs&lt;/span&gt;
text-processor extract &lt;span class="s2"&gt;"*.log"&lt;/span&gt; &lt;span class="s2"&gt;"ERROR"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; all_errors.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Count Words and Lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;text-processor count &lt;span class="s2"&gt;"*.md"&lt;/span&gt; &lt;span class="nt"&gt;--words&lt;/span&gt; &lt;span class="nt"&gt;--lines&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Format Text
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;text-processor format input.txt &lt;span class="nt"&gt;--uppercase&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; output.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-World Example: Log Analysis
&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;# Step 1: Extract all 500 errors&lt;/span&gt;
text-processor extract &lt;span class="s2"&gt;"/var/log/*.log"&lt;/span&gt; &lt;span class="s2"&gt;"HTTP/1.1 500"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; errors_500.txt

&lt;span class="c"&gt;# Step 2: Count unique error patterns&lt;/span&gt;
text-processor count errors_500.txt &lt;span class="nt"&gt;--lines&lt;/span&gt;

&lt;span class="c"&gt;# Step 3: Replace sensitive data in logs&lt;/span&gt;
text-processor replace &lt;span class="s2"&gt;"/var/log/*.log"&lt;/span&gt; &lt;span class="s2"&gt;"password=[^&amp;amp;]+"&lt;/span&gt; &lt;span class="s2"&gt;"password=[REDACTED]"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install
&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; text-processor-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;Check out the source on GitHub: &lt;a href="https://github.com/lb1192176991/cli-toolkit-collection" rel="noopener noreferrer"&gt;text-processor-pro&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎪 &lt;strong&gt;Visit us&lt;/strong&gt;: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;https://www.tucaowall.vip/&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;Get free DigitalOcean credit&lt;/strong&gt;: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;https://m.do.co/c/fc5cb7b29a0d&lt;/a&gt;&lt;br&gt;
🔧 &lt;strong&gt;CLI Toolkit Pro&lt;/strong&gt; - Unified CLI for devs: &lt;a href="https://bobotempes.gumroad.com/l/nmcqjr" rel="noopener noreferrer"&gt;Buy $9.99&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What text processing tasks do you face? Share in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>cli</category>
      <category>regex</category>
    </item>
    <item>
      <title>Introducing CLI Toolkit Pro: 8 CLI Tools in One Package</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Wed, 10 Jun 2026 17:47:12 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/introducing-cli-toolkit-pro-8-cli-tools-in-one-package-20c6</link>
      <guid>https://dev.to/lb1192176991lab/introducing-cli-toolkit-pro-8-cli-tools-in-one-package-20c6</guid>
      <description>&lt;h2&gt;
  
  
  One CLI to Rule Them All
&lt;/h2&gt;

&lt;p&gt;I maintain 8 individual CLI tools (csv-toolkit-pro, json-tidy-pro, batch-image-tool, text-processor-pro, file-batch-toolkit, pdf-toolkit-pro, csv-processing-api-server, creator-automation-bot).&lt;/p&gt;

&lt;p&gt;They're all useful individually. But typing 8 different command names is annoying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI Toolkit Pro&lt;/strong&gt; bundles all of them into one unified interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cli-toolkit-pro csv merge file1.csv file2.csv
npx cli-toolkit-pro json format data.json
npx cli-toolkit-pro image compress ./photos/
npx cli-toolkit-pro text replace ./logs/ &lt;span class="s2"&gt;"old"&lt;/span&gt; &lt;span class="s2"&gt;"new"&lt;/span&gt;
npx cli-toolkit-pro file rename ./downloads/ &lt;span class="nt"&gt;--pattern&lt;/span&gt; &lt;span class="s2"&gt;"doc-{n}"&lt;/span&gt;
npx cli-toolkit-pro pdf merge doc1.pdf doc2.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What's Inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;th&gt;Individual Package&lt;/th&gt;
&lt;th&gt;CLI Toolkit Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CSV/Excel&lt;/td&gt;
&lt;td&gt;csv-toolkit-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit csv ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSON&lt;/td&gt;
&lt;td&gt;json-tidy-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit json ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images&lt;/td&gt;
&lt;td&gt;batch-image-tool&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit image ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;text-processor-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit text ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files&lt;/td&gt;
&lt;td&gt;file-batch-toolkit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit file ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDFs&lt;/td&gt;
&lt;td&gt;pdf-toolkit-pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cli-toolkit pdf ...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Installation
&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; cli-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/cli-toolkit-pro" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
    <item>
      <title>PDF Operations Without Opening Adobe Acrobat</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:59:48 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-58f2</link>
      <guid>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-58f2</guid>
      <description>&lt;h2&gt;
  
  
  PDFs Don't Need to Be Painful
&lt;/h2&gt;

&lt;p&gt;Need to merge 5 PDFs into one? Split a 200-page document? Extract text from a scanned contract?&lt;/p&gt;

&lt;p&gt;Stop opening Adobe Acrobat and waiting 30 seconds for it to load:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx pdf-toolkit-pro merge doc1.pdf doc2.pdf doc3.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; combined.pdf
npx pdf-toolkit-pro &lt;span class="nb"&gt;split &lt;/span&gt;thick.pdf &lt;span class="nt"&gt;--pages&lt;/span&gt; 1-50
npx pdf-toolkit-pro extract text scanned.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; extracted.txt
npx pdf-toolkit-pro info report.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge&lt;/strong&gt;: Combine multiple PDFs into one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split&lt;/strong&gt;: Extract specific pages or ranges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract Text&lt;/strong&gt;: Pull text content (works with OCR-scanned docs too)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compress&lt;/strong&gt;: Reduce file size&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata&lt;/strong&gt;: View and edit PDF metadata&lt;/li&gt;
&lt;/ul&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; pdf-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/pdf-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/pdf-toolkit" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>pdf</category>
      <category>cli</category>
    </item>
    <item>
      <title>PDF Operations Without Opening Adobe Acrobat</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:54:23 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-5b8i</link>
      <guid>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-5b8i</guid>
      <description>&lt;h2&gt;
  
  
  PDFs Don't Need to Be Painful
&lt;/h2&gt;

&lt;p&gt;Need to merge 5 PDFs into one? Split a 200-page document? Extract text from a scanned contract?&lt;/p&gt;

&lt;p&gt;Stop opening Adobe Acrobat and waiting 30 seconds for it to load:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx pdf-toolkit-pro merge doc1.pdf doc2.pdf doc3.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; combined.pdf
npx pdf-toolkit-pro &lt;span class="nb"&gt;split &lt;/span&gt;thick.pdf &lt;span class="nt"&gt;--pages&lt;/span&gt; 1-50
npx pdf-toolkit-pro extract text scanned.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; extracted.txt
npx pdf-toolkit-pro info report.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge&lt;/strong&gt;: Combine multiple PDFs into one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split&lt;/strong&gt;: Extract specific pages or ranges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract Text&lt;/strong&gt;: Pull text content (works with OCR-scanned docs too)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compress&lt;/strong&gt;: Reduce file size&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata&lt;/strong&gt;: View and edit PDF metadata&lt;/li&gt;
&lt;/ul&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; pdf-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/pdf-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/pdf-toolkit" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>pdf</category>
      <category>cli</category>
    </item>
    <item>
      <title>PDF Operations Without Opening Adobe Acrobat</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:48:44 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-3epe</link>
      <guid>https://dev.to/lb1192176991lab/pdf-operations-without-opening-adobe-acrobat-3epe</guid>
      <description>&lt;h2&gt;
  
  
  PDFs Don't Need to Be Painful
&lt;/h2&gt;

&lt;p&gt;Need to merge 5 PDFs into one? Split a 200-page document? Extract text from a scanned contract?&lt;/p&gt;

&lt;p&gt;Stop opening Adobe Acrobat and waiting 30 seconds for it to load:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx pdf-toolkit-pro merge doc1.pdf doc2.pdf doc3.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; combined.pdf
npx pdf-toolkit-pro &lt;span class="nb"&gt;split &lt;/span&gt;thick.pdf &lt;span class="nt"&gt;--pages&lt;/span&gt; 1-50
npx pdf-toolkit-pro extract text scanned.pdf &lt;span class="nt"&gt;-o&lt;/span&gt; extracted.txt
npx pdf-toolkit-pro info report.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge&lt;/strong&gt;: Combine multiple PDFs into one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split&lt;/strong&gt;: Extract specific pages or ranges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract Text&lt;/strong&gt;: Pull text content (works with OCR-scanned docs too)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compress&lt;/strong&gt;: Reduce file size&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata&lt;/strong&gt;: View and edit PDF metadata&lt;/li&gt;
&lt;/ul&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; pdf-toolkit-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/pdf-toolkit-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/pdf-toolkit" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>pdf</category>
      <category>cli</category>
    </item>
    <item>
      <title>File Operations at Scale: file-batch-toolkit</title>
      <dc:creator>Bobo</dc:creator>
      <pubDate>Mon, 08 Jun 2026 17:13:28 +0000</pubDate>
      <link>https://dev.to/lb1192176991lab/file-operations-at-scale-file-batch-toolkit-fj3</link>
      <guid>https://dev.to/lb1192176991lab/file-operations-at-scale-file-batch-toolkit-fj3</guid>
      <description>&lt;h2&gt;
  
  
  When "Just Drag It" Doesn't Scale
&lt;/h2&gt;

&lt;p&gt;You download a folder of 200 files named "IMG_20260401_001.jpg" through "IMG_20260401_200.jpg". You need them renamed to "product-001.jpg" through "product-200.jpg".&lt;/p&gt;

&lt;p&gt;Do you do it manually? Write a script?&lt;/p&gt;

&lt;p&gt;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 file-batch-toolkit rename ./photos/ &lt;span class="nt"&gt;--pattern&lt;/span&gt; &lt;span class="s2"&gt;"product-{n}"&lt;/span&gt; &lt;span class="nt"&gt;--start&lt;/span&gt; 1
npx file-batch-toolkit organize ./downloads/ &lt;span class="nt"&gt;--by&lt;/span&gt; &lt;span class="nb"&gt;date
&lt;/span&gt;npx file-batch-toolkit deduplicate ./backups/ &lt;span class="nt"&gt;--hash&lt;/span&gt; sha256
npx file-batch-toolkit stats ./projects/ &lt;span class="nt"&gt;--size&lt;/span&gt; &lt;span class="nt"&gt;--count&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why You Need This
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Manual&lt;/th&gt;
&lt;th&gt;file-batch-toolkit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rename 500 files&lt;/td&gt;
&lt;td&gt;30 min (F2 spam)&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deduplicate backup folder&lt;/td&gt;
&lt;td&gt;"I'll do it later"&lt;/td&gt;
&lt;td&gt;3 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organize by type&lt;/td&gt;
&lt;td&gt;20 min&lt;/td&gt;
&lt;td&gt;1 second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File statistics&lt;/td&gt;
&lt;td&gt;10 min manually&lt;/td&gt;
&lt;td&gt;Instant&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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; file-batch-toolkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/file-batch-toolkit" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lb1192176991-lab/file-batch-toolkit" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ My tools &amp;amp; open-source projects: &lt;a href="https://github.com/lb1192176991-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 Blog &amp;amp; updates: &lt;a href="https://www.tucaowall.vip/" rel="noopener noreferrer"&gt;TucaoWall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;☁️ Deploy your own cloud server and get $25 credit: &lt;a href="https://m.do.co/c/fc5cb7b29a0d" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 CLI Toolkit Pro (bundle of all my CLI tools): &lt;a href="https://www.npmjs.com/package/cli-toolkit-pro" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 Hire me on Freelancer: &lt;a href="https://www.freelancer.com/u/a0982" rel="noopener noreferrer"&gt;a0982&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>cli</category>
      <category>files</category>
    </item>
  </channel>
</rss>
