BareNPM: A bare minimum NPM package installer.

Just wanted to update on what i’m currently working on.
Nova is pretty much in a releasable state except that I ran into another idea to do at work and it was something I could use asap at work so I began work on it.

I’m creating an alternative package installer for NPM, with a few key differences:

  1. No symlink hell: Maybe no symlinks at all. I’m designing it to install a package from NPM without any symlinks (i think I may make it so that if you link to a non JS file as a module it will symlink, but undecided yet as that feature doesn’t even work on default NPM, so possibly wont do any symlinking)
  2. Lightweight packages: A module package will not include tons of references to other dependencies in its folder. It will simply be the folder that was published to npm (usually the project on github)
  3. Per Project basis: Modules will be installed to a specific projects libs folder and not on a global level. Letting you manage the packers needed for your specific project, and no needing to worry about file permissions, and no need to worry about deployment ensuring your server has all the needed npm packages installed at the correct version.

The recursive symlinks of npm destroy some IDE’s and overall makes a hard to figure out folder structure. They also do not play as nice for windows, causing it confusion.
So that was the main reason for making this. As I could no longer work on my project due to the symlinks (yes it’s an IDE bug that should be fixed, but the linking isn’t really necessary, at least not recursively)

Also, the idea of global modules does not serve well for packaging modules into a projects version control. Trying to configure npm to install to a projects folder instead of global was a nightmare.

So barenpm is designed to be a tool for people who want to bundle packages as part of their project and included in a much leaner fashion.

I also am writing this in order to show to Isaacs so he may take some ideas from this implementation of the install method and hopefully get NPM to provide these features and not need symlinks. That is my ultimate goal,
but I needed the solution now and could not wait for NPM to officially support these ideas.

If you want to check out the current code, hit it up on my github
It’s not done, but it’s getting close.

I will finish up Nova documentation and do a proper release afterwards.


Enter your email address to subscribe to this blog and receive notifications of new posts by email.

I am Senior Software Engineer and Entrepeneur. I am an enthusiast and love creating things. I operate my own side company in my free time called Starlis LLC, working in Minecraft.

I enjoy doing things right and learning modern technologies.