<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged pnpm</title>
<link>https://coderlegion.com/tag/pnpm</link>
<description>Powered by Question2Answer</description>
<item>
<title> FNPM Just Became Invisible (In the Good Way): Transparent Alias, Better Tests &amp; a Smoother Experience</title>
<link>https://coderlegion.com/22063/fnpm-just-became-invisible-the-good-transparent-alias-better-tests-smoother-experience</link>
<description>&lt;p&gt;There are moments when you stop, look at your terminal, and think:&lt;br&gt;
&lt;em&gt;“Why does something as simple as managing packages in JavaScript has to be… so dramatic?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you've been around the Node.js ecosystem for more than 5 minutes, you know exactly what I mean.&lt;/p&gt;
&lt;p&gt;Well, &lt;strong&gt;FNPM just got its biggest update ever&lt;/strong&gt;, and no, it’s not “just another technical improvement.” This update is about giving you the experience we all secretly wanted: using your favorite package manager &lt;em&gt;while something way smarter runs behind the scenes&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Let me explain.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;before-npm-pnpm-yarn-drama-&quot;&gt;Before: npm, pnpm, yarn… drama.&lt;/h3&gt;
&lt;h3 id=&quot;now-use-whatever-you-want-fnpm-does-the-hard-work-&quot;&gt;Now: use whatever you want. FNPM does the hard work.&lt;/h3&gt;
&lt;p&gt;The biggest change (and my personal favorite) is the new &lt;strong&gt;transparent alias system&lt;/strong&gt;.&lt;br&gt;
This means you can now type:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;pnpm install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…and behind the scenes, &lt;strong&gt;FNPM is actually doing the job&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why is this so massive?&lt;/p&gt;
&lt;p&gt;Because for the first time, an alternative package manager can &lt;em&gt;sneak into&lt;/em&gt; (yeah, sounds weird but it’s beautiful) your workflow &lt;strong&gt;without asking you to change anything&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If your team uses &lt;code&gt;pnpm&lt;/code&gt;, perfect.&lt;br&gt;
If you prefer FNPM’s model and how it handles things, also perfect.&lt;br&gt;
If your environment is mixed… well, guess what? It works too.&lt;/p&gt;
&lt;p&gt;FNPM now behaves as a &lt;strong&gt;real drop-in replacement&lt;/strong&gt;, like &lt;em&gt;for real real&lt;/em&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;how-does-this-alias-magic-works-&quot;&gt;How does this alias magic works?&lt;/h3&gt;
&lt;p&gt;FNPM now includes a smart &lt;strong&gt;hook system&lt;/strong&gt; that intercepts the traditional package manager commands and transforms them into FNPM operations.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It detects what you want (&lt;code&gt;install&lt;/code&gt;, &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, &lt;code&gt;run&lt;/code&gt;, etc.).  &lt;/li&gt;
&lt;li&gt;It maps it to FNPM’s internal engine.  &lt;/li&gt;
&lt;li&gt;It keeps the CLI experience you already know.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All without breaking scripts, without changing your mental model, and without asking you to learn new commands (because, honestly, nobody wants that anymore ).&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;better-test-coverage-and-now-actually-cross-platform-&quot;&gt;Better test coverage (and now &lt;em&gt;actually&lt;/em&gt; cross-platform)&lt;/h3&gt;
&lt;p&gt;Another big step forward is the &lt;strong&gt;improved test coverage&lt;/strong&gt;, which now behaves consistently across systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux  &lt;/li&gt;
&lt;li&gt;macOS  &lt;/li&gt;
&lt;li&gt;Windows (yes, Windows got some love this time )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Error messages, symlink behavior, path formatting… all those cross-platform headaches?&lt;br&gt;
FNPM now handles them.&lt;/p&gt;
&lt;p&gt;This means FNPM isn’t just “usable” on Windows —&lt;br&gt;
it’s &lt;strong&gt;reliable&lt;/strong&gt;, &lt;strong&gt;predictable&lt;/strong&gt;, and &lt;strong&gt;CI-friendly&lt;/strong&gt; across all platforms.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-other-cool-improvements-worth-mentioning&quot;&gt;️ Other cool improvements worth mentioning&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New &lt;code&gt;fnpm source&lt;/code&gt; command for shell integration  &lt;/li&gt;
&lt;li&gt;GitHub Workflows + issue templates for better contributing  &lt;/li&gt;
&lt;li&gt;Updated dependencies (thanks Dependabot )  &lt;/li&gt;
&lt;li&gt;Cleaner project structure with better dev tooling  &lt;/li&gt;
&lt;li&gt;A more complete test suite for future expansions  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FNPM keeps growing with a focus on simplicity + power, not complexity.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;a-real-example-turning-pnpm-into-fnpm-without-anyone-noticing-&quot;&gt;A real example: turning &lt;code&gt;pnpm&lt;/code&gt; into FNPM (without anyone noticing)&lt;/h3&gt;
&lt;p&gt;Here’s a real example of how easy this is.&lt;br&gt;
I swear the first time you run it, you’ll feel that “oh wow” moment .&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;(base) ➜  awesome-project fnpm setup pnpm  
Selected package manager: pnpm  

 FNPM hooks created successfully!

Setup Instructions:  
Unix/Linux/macOS:  
  1. Source the setup script:  
     source .fnpm/setup.sh  
  2. Or add to your shell profile (~/.bashrc, ~/.zshrc):  
     echo 'eval &quot;$(fnpm source)&quot;' &amp;gt;&amp;gt; ~/.zshrc  

Usage:  
  • Now you can use pnpm directly:  
    pnpm add some-package  
    pnpm install  
    pnpm run my-script  
  • Commands will be automatically redirected to fnpm  

Note:  
  • Hooks only work in directories with .fnpm configuration  
  • Use full path to bypass: $(which pnpm) command  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reload your shell:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;(base) ➜  awesome-project echo 'eval &quot;$(fnpm source)&quot;' &amp;gt;&amp;gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now try any &lt;code&gt;pnpm&lt;/code&gt; command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;(base) ➜  awesome-project pnpm --help
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt; This pnpm command is intercepted by FNPM  
Available commands:  
  install, add, remove, run, list, update, cache, clean  

Use 'fnpm --help' for more information  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; Boom.&lt;br&gt;
From that moment on, you keep using &lt;code&gt;pnpm&lt;/code&gt; like always…&lt;br&gt;
but FNPM is the one doing the heavy lifting behind the curtain.&lt;/p&gt;
&lt;p&gt;No workflow changes.&lt;br&gt;
No broken scripts.&lt;br&gt;
No new habits.&lt;br&gt;
Just smooth developer life.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-in-short-fnpm-is-no-longer-used-it-s-felt&quot;&gt;✨ In short: FNPM is no longer “used”… it’s &lt;em&gt;felt&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;With this transparent alias system, FNPM stops being a command you remember to type, and becomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fast  &lt;/li&gt;
&lt;li&gt;consistent  &lt;/li&gt;
&lt;li&gt;cross-platform  &lt;/li&gt;
&lt;li&gt;and completely invisible when you want it to be  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If it was useful before, now it feels… &lt;em&gt;kinda magical&lt;/em&gt;, honestly.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;ps-we-used-ai-to-help-us-write-this-article-because-great-tools-deserve-great-storytelling-&quot;&gt;PS: we used AI to help us write this article — because great tools deserve great storytelling.&lt;/h4&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fnpm-docs.vercel.app/&quot;&gt;Documentation here&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/22063/fnpm-just-became-invisible-the-good-transparent-alias-better-tests-smoother-experience</guid>
<pubDate>Tue, 07 Jul 2026 17:12:02 +0000</pubDate>
</item>
<item>
<title>FNPM: The Package Manager Drama Ends Here </title>
<link>https://coderlegion.com/21776/fnpm-the-package-manager-drama-ends-here</link>
<description>&lt;h4 id=&quot;fnpm-the-package-manager-drama-ends-here&quot;&gt;FNPM: The Package Manager Drama Ends Here&lt;/h4&gt;
&lt;p&gt;Hey devs!  Tired of the endless debates over package managers? Ever wished for a solution that brings peace to the package manager wars? Meet FNPM – because life's too short for package manager drama! &lt;/p&gt;
&lt;p&gt;I work at &lt;a rel=&quot;nofollow&quot; href=&quot;https://konstruct.io&quot;&gt;Konstruct.io&lt;/a&gt; we have free Fridays, and this idea was stuck in my mind for a while. I finally took advantage of AI to bring it to life!  So please give us ⭐️ on &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/konstructio/kubefirst&quot;&gt;konstructio/kubefirst&lt;/a&gt;, a great and amazing way to setup your kubernetes infrastructure following gitOps Philosophy.&lt;/p&gt;
&lt;h5 id=&quot;what-is-fnpm-&quot;&gt;What is FNPM?&lt;/h5&gt;
&lt;p&gt;FNPM stands for &lt;strong&gt;Fuck NPM&lt;/strong&gt;. It's a tool designed to end the eternal conflicts between npm, yarn, pnpm, and others by supporting them all seamlessly. Think of it as the peace treaty in the package manager soap opera. ️&lt;/p&gt;
&lt;h5 id=&quot;why-should-you-care-&quot;&gt;Why Should You Care?&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Universal Support &lt;/strong&gt; – FNPM supports multiple package managers, including npm, yarn, pnpm, bun, and deno. Use your favorite; FNPM has your back!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One Lock File to Rule Them All &lt;/strong&gt; – No more lock file conflicts! FNPM ensures consistent dependencies across your team, regardless of individual preferences.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Happy CI/CD &lt;/strong&gt; – Standardized workflows and consistent builds mean no more &quot;works on my machine&quot; excuses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Team Harmony &lt;/strong&gt; – Let developers be developers. Stop the package manager wars and focus on building awesome stuff!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&quot;how-to-get-started&quot;&gt;How to Get Started&lt;/h5&gt;
&lt;p&gt;Getting FNPM up and running is super simple:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/ideascoldigital/fnpm/refs/heads/main/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, just use it like you would with your preferred package manager:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fnpm setup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And boom!  Your dependencies are managed without the drama. &lt;/p&gt;
&lt;h5 id=&quot;basic-commands&quot;&gt;Basic Commands&lt;/h5&gt;
&lt;p&gt;Here's a quick reference of basic commands supported across all package managers:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Action               &lt;/th&gt;&lt;th&gt;FNPM 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;Install dependencies &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm install&lt;/code&gt;          &lt;/td&gt;&lt;td&gt;Installs all project dependencies&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Add a package        &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm add &amp;lt;package&amp;gt;&lt;/code&gt;    &lt;/td&gt;&lt;td&gt;Adds a new package to your project&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Remove a package     &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm remove &amp;lt;package&amp;gt;&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Removes a package from your project&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Update packages      &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm update&lt;/code&gt;           &lt;/td&gt;&lt;td&gt;Updates packages to their latest versions&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Run a script         &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm run &amp;lt;script&amp;gt;&lt;/code&gt;     &lt;/td&gt;&lt;td&gt;Runs a script defined in package.json&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Clean cache          &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm clean&lt;/code&gt;            &lt;/td&gt;&lt;td&gt;Cleans the package manager cache&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;List packages        &lt;/td&gt;&lt;td&gt;&lt;code&gt;fnpm list&lt;/code&gt;             &lt;/td&gt;&lt;td&gt;Lists installed packages&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h5&gt;
&lt;p&gt;FNPM is here to bring harmony to your development workflow. It's easy to install, easy to use, and might just save you from the package manager drama. ️&lt;/p&gt;
&lt;p&gt;Check out the official docs here  &lt;a rel=&quot;nofollow&quot; href=&quot;https://fnpm-docs.vercel.app/&quot;&gt;FNPM Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have you tried FNPM? Let me know what you think! ✨&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/21776/fnpm-the-package-manager-drama-ends-here</guid>
<pubDate>Thu, 02 Jul 2026 17:18:53 +0000</pubDate>
</item>
</channel>
</rss>