DEV Community

Cover image for How One Package Manager Library Inspired Me to Build My Own🚀
Marin-Eusebiu Șerban
Marin-Eusebiu Șerban

Posted on • Edited on • Originally published at Medium

How One Package Manager Library Inspired Me to Build My Own🚀

TL;DR

Picture this: You open your project, ready to build something awesome, and iCloud pops up with that dreaded "Your storage is almost full" message. Enter FNSPM, your new best friend that renames node_modules to node_modules.nosync and politely tells iCloud to chill. It automatically detects whether you're using npm, yarn, pnpm, bun, or deno, so you can just keep typing the same commands and flags you already know. No more giant backups, no more memorizing different CLIs - just you, your code, and a peaceful iCloud experience.

The Frustration 💢 & The Spark ✨

It all started when I was ready to code away on a personal project. Suddenly, iCloud decided to max out on storage because of my ever-growing node_modules folder. I stumbled upon nosync-icloud, which was great - except it didn't support Bun. I had to manually create a node_modules.nosync folder each time, and my frustration led me to create FNSPM (Fast No Sync Package Manager).

Meet FNSPM 🚀

FNSPM is a simple, unified tool that:

  1. Auto-Detect: Figures out whether you're using npm, yarn, pnpm, Bun, or Deno by scanning lock files.

  2. No More iCloud Blues: Instantly renames node_modules to node_modules.nosync, stopping iCloud from blowing up.

  3. Native Commands: Reuses each manager's existing flags and commands, so you don't have to learn anything new.

Installation & Basic Usage

Install FNSPM globally:

npm install -g fnspm
Enter fullscreen mode Exit fullscreen mode

Initialize your project:

fnspm initialize
Enter fullscreen mode Exit fullscreen mode

That's it! You can now run:

fnspm install lodash
Enter fullscreen mode Exit fullscreen mode

FNSPM automatically figures out which manager to use. Or specify one yourself:

fnspm --pm bun install lodash
Enter fullscreen mode Exit fullscreen mode

Pro tip: Use the same flags and commands you're used to. FNSPM translates them behind the scenes.

Making Life Easier on macOS

  • By renaming node_modules to a .nosync folder and using symlinks, FNSPM keeps iCloud from uploading massive directories.

  • It also saves you from the dreaded "Your iCloud storage is full" pop-ups in the middle of coding.

📜 License & Disclaimer

FNSPM is open source (GPL-3.0) and meant for educational, non-commercial use. Feel free to use it in personal projects like any other package manager - just keep in mind it's still under active development, so some kinks might remain.

💭 Final Thoughts

If you're tired of iCloud sync surprises or juggling different package managers, give FNSPM a try. It may not fix your love–hate relationship with Apple entirely, but at least it'll save you some headaches along the way!

Author: Marin-Eusebiu ȘerbanGitHub
🧑🏻‍💻 Happy coding - no more "iCloud Full"

Top comments (0)