minstall v4.0.1
Minstall is a local module installer, intended to be used as postinstall-script.
Example
Let's say you have the following modular app, and run npm install on it:
my-modular-app
├── modules
│ ├── database
│ │ ├── index.js
│ │ └── package.json [requires mongoose and lodash]
│ └── tasks
│ ├── index.js
│ └── package.json [requires lodash and database]
├── index.js
└── package.json [requires express, uses database and tasks]The problems
- Your local modules (
databaseandtasks) wouldn't work, because their dependencies are missing. - To require your modules, you would need to either npm-link them, or use a
./modules/-prefix
The solution
Minstall installs the necessary dependencies to the root-node_modules, and symlinks the modules there.
After running npm install with minstall as postinstall, the structure looks like this:
my-modular-app
├── modules
│ ├── database
│ │ ├── index.js
│ │ ├── node_modules
│ │ │ ├── lodash -> ../../../node_modules/lodash
│ │ │ └── mongoose -> ../../../node_modules/mongoose
│ │ └── package.json
│ └── tasks
│ │ ├── index.js
│ │ ├── node_modules
│ │ │ └── lodash -> ../../../node_modules/lodash
│ │ │ └── database -> ../../database
│ │ └── package.json
├── node_modules
│ ├── lodash
│ ├── minstall
│ └── mongoose
├── index.js
└── package.json- All modules work, because their dependencies are present
- conflicting dependencies end up in the associated modules, not in the root
- Modules can be required directly, because they are symlinked
->require('./modules/database')require('database')
- The installation is faster and smaller, because dependencies are only installed once
- dependencies that are already installed, are not re-downloaded (except for npm5 users, because of npm issue #16853)
Usage
- install with
npm install minstall --save - add it as postinstall-script to your package.json:
modules-folderis optional, and defaults tomodulesif omitted
"scripts": {
"postinstall": "minstall <modules-folder>"
}Parameters
Minstall knows the following flags:
--no-linkprevents minstall from linking the local modules to the root-node_modules--link-onlymakes minstall go through the linking-process only, without installing anything--cleanupmakes minstall remove all node_modules-folders before installing dependencies (this is forced for npm5)--dependency-check-onlymakes install print the dependency-check only, without touching any files or installing anything--assume-local-modules-satisfy-non-semver-dependency-versions(aka--trust-local-modules) makes minstall assume that a local module satisfies every requested version of that module that is not valid semver (like github-urls and tag-names)--loglevel <loglevel>sets the loglevel (error,warn,infoverbose,debug,silly)--no-hoist <dependency>. makes minstall not hoist that dependency.<dependency>has the form name@versionRange, e.g.--no-hoist aurelia-cli@^0.30.1. If you omit the versionRange, no version of that dependency will be hoisted. The name can be a glob expression (see minimatch), e.g.--no-hoist aurelia-*. This is useful for dependencies that don't play nice when hoisted/linked. This flag can be added multiple times.
In collaboration with

5minds.de
github.com/5minds
6 years ago
6 years ago
6 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago