NIP - The vendor bundle package manager
I have written this more as a hobby than anything else. It's intended to function similar to python package manager and server a very niche set of use cases.
During development on some projects I'm sure you've been bitten by npm updating a module here or there without telling you then all of a sudden your site is dead and you have to go back and figure out why.
nip
is an attempt to create a locking system that puts the power of javascript module versioning in the hands of the developer
and doesn't leave it up to the machine to best guess (unless you want it to, then nip
also supports that).
Basic usage
First install nip:
npm install -g nip-js
It'll need to be global if you want to use it on more than one project.
The basic lifecycle of nip is this:
- Install a module, just as you would from npm with nip
nip install angular
- Install another module, maybe it's dependant on angular?
nip install angular-ui-router -d angular
- Continue installing modules until you have a good set of modules that you want to produce into a "vendor bundle"
- Run the build command
nip b --output vendor.bundle.js --minify
- Out spits a file that contains a concatenated file with all of our
nip install
ed modules in. In order so that (hopefully) when run in the browser all dependencies are fulfilled.
Requirements.txt
If you've every used pip
you'll recall a command like pip install -r requirements.txt
well - nip
has the same thing. A requirements.txt file needs to be formatted like so:
angular==1.5.8
angular-ui-router==latest$d=angular
A module that depends on other modules is required to have the $d==
followed by a comma seperated list of modules that this module requires to run.
Then, nip can install the packages en masse like so:
nip install -r requirements.txt
Nip will then sort out all of the required files and install them (or grab them from the cache).
contributing
Hey man, if you want to come and burn with me, feel free to fork and PR me with any new feature.