<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged fnpm</title>
<link>https://coderlegion.com/tag/fnpm</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>
</channel>
</rss>