So, I have problem with npm in my current work. Basically it’s this: the systems I work on are disconnected from the internet but I still need certain node modules. So in order to get a module over to these systems I have to install it locally, zip it up and move that file. But technically, that file is an INSTALLED version, not the raw version of the install. So what I need is the raw installed files of the npm install, and then I need a way to install from those files.
I recently filed a feature request for npm describing this very request. Yet, I don’t think everyone understood the request, plus I thought it wouldn’t be that hard to actually build it. So I did.
Announcing npmbox. A command line utility add on for npm that when given an npm package
npmbox <package>
downloads the package and it dependencies and creates a .npmbox file which is a .tar.gz file of all the raw files necessary to install the package which includes the package, its dependencies, and its optional dependencies.
Taking this .npmbox file, you can then move it to your offline system and issue an npmunbox commmand against it.
npmunbox <npmbox-file>
This will take the box file, unzip it, and install its contents into the current folder.
Thus this achieves the process I am looking for, bundling a package for offline use and then installing from that bundled package.
My sincere hope is that the npm people take a look at the functionality and actually add it directly to npm. I’m not expecting they use the code, just the basic idea. I’m sure there are far better ways to achieve this from inside npm than what I am doing. So have at it.