1.0.0 • Published 6 years ago
tinypm v1.0.0
Intro
this project is heavily inspired by the awesome post: Let's Dev: A Package Manager but reimplement it from scratch.
It has a clean code base, add some tests and remove babel-node
requirement compared to original implementation.
Usage
just type tinypm
and you are done 😎.
Implementation
the whole process is divided into 3 steps implemented in corresponding js files.
- resolve: read package.json and resolve the whole dependency tree
- optimize: optimize the dependency tree, try to flat it as much as we can
- link: download packages and link them to node_modules folder
to speed up the processing, tinypm
uses /tmp/.tinypm
as cache dir.
Notes
as the original implementation, the binary installation directory is wrong.
e.g. if package A
depends on package B
which has a binary called cli-b
, tinypm
will install cli-b
to root/node_modules/.bin/cli-b
, but the correct location is root/node_modules/A/node_modules/.bin/cli-b
.
License
Released under the MIT license
1.0.0
6 years ago