An alternative package manager for Node.
- blazingly fast due to completely concurrent installation procedure and constant (micro) optimizations
- correctly resolves (circular) dependencies
- supports semver
- correctly handles
devDependencies - produces a flat node_modules directory
- verifies the integrity of downloaded packages
- fast caching
- interfaces with the npm registry
- has no global namespace for packages
- allows you to
requiremultiple versions of the same package - visually indicates progress via progress bar
- respects your global configuration
- can run arbitrary scripts defined in your
package.json(e.g.test) - supports the usual
installflags, such as--save,--save-dev - allows you to install arbitrary groups of packages, e.g. (
ied install --only otherDeps,ied install --only prod) - useful utilities, such as
ping,config,ls - allows you to easily start a new sub-shell that allows you to use the scripts exposed by your dependencies without installing them globally via
ied sh - supports private registries
- makes it impossible for you to accidentally require sub-dependencies, even though node_modules is completely flat
- completely atomic:
node_modulesis guaranteed to be consistent
Why?
The original idea was to implement npm's pre-v3 install algorithm in as few lines as possible. This goal was achieved in c4ba56f.
Currently the main goal of this project is to provide a more performant alternative to npm. I like npm, but it's just too slow.
Installation
The easiest way to install ied is using npm:
npm i -g ied
Alternatively you can also "bootstrap" ied. After an initial installation via npm, ied will install its own dependencies:
git clone https://github.com/alexanderGugel/ied ied && cd $_ && make install
Usage
ied is a package manager for Node.
Usage:
ied command [arguments]
The commands are:
install fetch packages and dependencies
run run a package.json script
test run the test-suite of the current package
shell enter a sub-shell with augmented PATH
ping check if the registry is up
ls print the dependency graph
expose make a sub-dependency `require`able
config print the used config
init initialize a new package
Flags:
-h, --help show usage information
-v, --version print the current version
-S, --save update package.json dependencies
-D, --save-dev update package.json devDependencies
-o, --only install a subset of the dependencies
-r, --registry use a custom registry (default: http://registry.npmjs.org/)
Example:
ied install
ied install @
ied install @
Can specify one or more: ied install semver@^5.0.1 tape
If no argument is supplied, installs dependencies from package.json.
Sub-commands can also be called via their shorthand aliases.
README: https://github.com/alexanderGugel/ied
ISSUES: https://github.com/alexanderGugel/ied/issues
Credits
Some ideas and (upcoming) features of ied are heavily inspired by Nix, a purely functional package manager.
FAQ
What does ied stand for?
Nothing in particular. It's just easy to type and
mpm(the original name) was already taken.
License
Licensed under the MIT license.