Npmi
NodeJS package that gives a simplier API to npm install (programatically installs things)
Install / Use
/learn @maxleiko/NpmiREADME
npmi 
NodeJS package that gives a simplier API to npm install (programatically installs things)
npmi versions scheme
- ^1: uses
npm@^2 - ^2: uses
npm@^3 - ^3: uses
npm@^5 - ^4: uses
global-npm(meaningnpmis no longer a dependency ofnpmi)
:warning: Be advised that
npmin itsv5+will symlink local modules from the destination directory to the actual module directory instead of "installing" them old-school style (which is a breaking change regarding the previous npm versions)
Options
options.name
Type: String
Optional: true
If you don't specify a name in options, but just a path, npmi will do the same as if you were at this path in a terminal and executing npm install
Otherwise, it will install the module specified by this name like npm install module-name does.
options.version
Type: String
Optional: true
Default 'latest'
Desired version for installation
options.path
Type: String
Optional: true
Default '.'
Desired location for installation (note that if you specified /some/foo/path, npm will automatically create a node_modules sub-folder at this location, resulting in /some/foo/path/node_modules). So don't specify the node_modules part in your path
options.forceInstall
Type: Boolean
Optional: true
Default false
If true, npmi will install options.name module even though it has already been installed.
If false, npmi will check if the module is already installed, if it is, it will also check if the installed version is equal to options.version, otherwise, it will install options.name@options.version
options.localInstall
Type: Boolean
Optional: true
Default false
Allows npmi to install local module that are not on npm registry. If, you want to install a local module by specifying its full path in options.name, you need to set this to true.
options.npmLoad
Type: Object
Optional: true
Default {loglevel: 'silent'}
This object is given to npm and allows you to do some fine-grained npm configurations.
It is processed by npm like command-line arguments but within an Object map (npm-config)
Usage example
var npmi = require('npmi');
var path = require('path');
console.log(npmi.NPM_VERSION); // prints the installed npm version used by npmi
var options = {
name: 'your-module', // your module name
version: '0.0.1', // expected version [default: 'latest']
path: '.', // installation path [default: '.']
forceInstall: false, // force install if set to true (even if already installed, it will do a reinstall) [default: false]
npmLoad: { // npm.load(options, callback): this is the "options" given to npm.load()
loglevel: 'silent' // [default: {loglevel: 'silent'}]
}
};
npmi(options, function (err, result) {
if (err) {
if (err.code === npmi.LOAD_ERR) console.log('npm load error');
else if (err.code === npmi.INSTALL_ERR) console.log('npm install error');
return console.log(err.message);
}
// installed
console.log(options.name+'@'+options.version+' installed successfully in '+path.resolve(options.path));
});
Acknowledgements
This work has been done in the context of the HEADS Project

Contributors
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

