<?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: Luka Vukanović</title>
    <description>The latest articles on DEV Community by Luka Vukanović (@vukan322).</description>
    <link>https://dev.to/vukan322</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%2F3421598%2F317b6729-d4ca-4daf-a646-be72a1f22605.png</url>
      <title>DEV Community: Luka Vukanović</title>
      <link>https://dev.to/vukan322</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vukan322"/>
    <language>en</language>
    <item>
      <title>A fast CLI tool to find and delete stale 'node_modules' directories, freeing up disk space.</title>
      <dc:creator>Luka Vukanović</dc:creator>
      <pubDate>Wed, 19 Nov 2025 10:53:04 +0000</pubDate>
      <link>https://dev.to/vukan322/-3plj</link>
      <guid>https://dev.to/vukan322/-3plj</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/vukan322" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3421598%2F317b6729-d4ca-4daf-a646-be72a1f22605.png" alt="vukan322"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/vukan322/i-nuked-all-my-nodemodules-and-saved-10gb-1m4k" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I Nuked All My node_modules and Saved ~10GB&lt;/h2&gt;
      &lt;h3&gt;Luka Vukanović ・ Nov 19 '25&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#cli&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#go&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>cli</category>
      <category>go</category>
      <category>node</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Nuked All My node_modules and Saved ~10GB</title>
      <dc:creator>Luka Vukanović</dc:creator>
      <pubDate>Wed, 19 Nov 2025 10:36:18 +0000</pubDate>
      <link>https://dev.to/vukan322/i-nuked-all-my-nodemodules-and-saved-10gb-1m4k</link>
      <guid>https://dev.to/vukan322/i-nuked-all-my-nodemodules-and-saved-10gb-1m4k</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Problem: When Backups Take Forever&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was backing up my entire Documents folder to an external SSD. Simple task, right? Wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 hours later&lt;/strong&gt;, I was still watching the progress bar crawl. Not because of large video files or databases — but because of &lt;code&gt;node_modules&lt;/code&gt;. Those tiny JavaScript files, tens of thousands of them per project, were destroying my backup speed.&lt;/p&gt;

&lt;p&gt;The issue wasn't even the disk space (though yeah, 10GB is 10GB). It was the sheer number of files. Each &lt;code&gt;node_modules&lt;/code&gt; folder has thousands of tiny dependencies, and copying thousands of small files is painfully slow compared to a few large ones.&lt;/p&gt;

&lt;p&gt;I had dozens of old projects in my Documents folder. Projects I hadn't touched in months. Each one still carrying around its own bloated &lt;code&gt;node_modules&lt;/code&gt; like dead weight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Breaking Point&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I realized: I don't need these. If I ever work on these projects again, I can just run &lt;code&gt;npm install&lt;/code&gt;. Why am I backing up gigabytes of reconstructable dependencies?&lt;/p&gt;

&lt;p&gt;So I did what any developer would do — I looked for a tool to nuke them all at once.&lt;br&gt;
I googled around, but nothing quite fit in what I need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safe by default (skip recent projects)&lt;/li&gt;
&lt;li&gt;Fast scanning&lt;/li&gt;
&lt;li&gt;Cross-platform&lt;/li&gt;
&lt;li&gt;Simple CLI&lt;/li&gt;
&lt;li&gt;No accidentally deleting system tools like .nvm or .npm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I spent a weekend building nukenm (nuke node_modules - Honestly, I really like the name).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Tool: nukenm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what it looks like in action:&lt;br&gt;
Basic scan to see what you're working with:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5q83m9jpb5imvo85nht.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5q83m9jpb5imvo85nht.jpeg" alt="Basic scan" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quiet mode for minimal output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxmhu7lthk4o7w881vo0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxmhu7lthk4o7w881vo0.jpeg" alt="Quiet mode" width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full help screen showing all options:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotflgl4mxasi3elofqw4.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotflgl4mxasi3elofqw4.jpeg" alt="Help" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aggressive cleanup when you're sure:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglzjgwsf88sopq7jrn2h.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglzjgwsf88sopq7jrn2h.jpeg" alt="Aggressive cleanup" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safety First&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tool is safe by default:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only targets folders not modified in the last 14 days (configurable)&lt;/li&gt;
&lt;li&gt;Skips hidden directories (protects .nvm, .npm, .cache)&lt;/li&gt;
&lt;li&gt;Dry run first — always shows what will be deleted&lt;/li&gt;
&lt;li&gt;Confirmation prompt before actual deletion&lt;/li&gt;
&lt;li&gt;Respects filesystem boundaries — won't cross into external drives
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Safe preview
nukenm scan ~/Documents

# Delete old projects (30+ days untouched)
nukenm nuke ~/Documents --days 30

# Nuclear option (careful!)
nukenm nuke ~/Documents --days 0 -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;The Results&lt;/strong&gt;&lt;br&gt;
After running it on my Documents folder:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deleted: 345 node_modules folders&lt;/li&gt;
&lt;li&gt;Freed: 8.7 GB of disk space&lt;/li&gt;
&lt;li&gt;Backup time: 2 hours → 15 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real win wasn't the disk space — it was the speed. Backing up my projects is now actually feasible.&lt;/p&gt;

&lt;p&gt;Try It Yourself&lt;br&gt;
The tool is open source and available now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Install (if you have Go)
go install github.com/vukan322/nuke-node_modules@latest

# Or download the binary from GitHub #
https://github.com/vukan322/nuke-node_modules/releases
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Basic usage:&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;# Preview what will be deleted
nukenm scan ~/Documents

# Actually delete (with confirmation)
nukenm nuke ~/Documents

# Quiet mode for scripts
nukenm scan ~/Documents --quiet

# See all options
nukenm --help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's Next?&lt;/strong&gt;&lt;br&gt;
I'm planning to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parallel deletion with goroutines (faster on large scans)&lt;/li&gt;
&lt;li&gt;Package manager installation (brew, apt, scoop)&lt;/li&gt;
&lt;li&gt;Scheduled cleanup (cron/Task Scheduler integration)&lt;/li&gt;
&lt;li&gt;Config file for custom rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have ideas or want to contribute, the repo is &lt;a href="https://github.com/vukan322/nuke-node_modules" rel="noopener noreferrer"&gt;nuke-node_modules&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>go</category>
      <category>node</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I built a YouTube downloader after my old favorite site became unusable</title>
      <dc:creator>Luka Vukanović</dc:creator>
      <pubDate>Fri, 08 Aug 2025 11:30:54 +0000</pubDate>
      <link>https://dev.to/vukan322/i-built-a-youtube-downloader-after-my-old-favorite-site-became-unusable-g0e</link>
      <guid>https://dev.to/vukan322/i-built-a-youtube-downloader-after-my-old-favorite-site-became-unusable-g0e</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9fg0zyr02crdme7woda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9fg0zyr02crdme7woda.png" alt="Screenshot of the clean YT Downloader landing page" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;I'm excited to write my first post here! I've been a regular reader over at daily.dev, but I've heard about the community here and wanted to jump in, share some projects, and connect with more of you.&lt;/p&gt;

&lt;p&gt;To kick things off, I wanted to share a small tool I built out of pure necessity.&lt;/p&gt;

&lt;p&gt;My mom regularly asks me to download new music for her. Back in the day, my go-to was always mp3juice, but lately, trying to use it or any other site has become a total nightmare. I’m sure you know the feeling just a mess of pop-up ads and sketchy redirects. After the last time, I got frustrated and thought, “It would be less of a headache to just build one myself.”&lt;/p&gt;

&lt;p&gt;So, I did. It’s a simple, open-source tool. I used Go for the backend and kept the front end simple with Vanilla JS, mainly because I just wanted something that works with no junk.&lt;/p&gt;

&lt;p&gt;It solved my problem, and helping my mom with her music is actually easy again. I figured I’d share it in case it can save someone else the frustration.&lt;/p&gt;

&lt;p&gt;You can try it out live at the link below, and all the code is up on GitHub.&lt;/p&gt;

&lt;p&gt;👉 Try it out: &lt;a href="https://lukavukanovic.xyz/yt-downloader/" rel="noopener noreferrer"&gt;Live URL&lt;/a&gt;&lt;br&gt;
👉 See the code: &lt;a href="https://github.com/vukan322/yt-mp3-go" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking forward to being a part of this community. 😁&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>go</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
