Действительно, можно использовать npm программно, и это было описано в более старых версиях документации. С тех пор он был удален из официальной документации, но все еще существует в системе контроля версий со следующим утверждением:
Хотя npm можно использовать программно, его API предназначен для использования только с помощью интерфейса командной строки, и не дается никаких гарантий относительно его пригодности для каких-либо других целей. Если вы хотите использовать npm для надежного выполнения некоторой задачи, самое безопасное, что можно сделать, - это вызвать нужную команду npm с соответствующими аргументами.
Семантическая версия npm относится к самому CLI, а не к базовому API. Не гарантируется, что внутренний API останется стабильным, даже если версия npm указывает на отсутствие критических изменений в соответствии с semver .
В исходной документации предоставлен следующий образец кода:
var npm = require('npm')
npm.load(myConfigObject, function (er) {
if (er) return handlError(er)
npm.commands.install(['some', 'args'], function (er, data) {
if (er) return commandFailed(er)
})
npm.registry.log.on('log', function (message) { ... })
})
Поскольку npm существует в node_modules
папке, вы можете использовать require('npm')
его, как любой другой модуль. Чтобы установить модуль, вы захотите использовать npm.commands.install()
.
Если вам нужно заглянуть в исходник, то он также есть на GitHub . Вот полный рабочий пример кода, который эквивалентен запуску npm install
без каких-либо аргументов командной строки:
var npm = require('npm');
npm.load(function(err) {
npm.commands.install(['ffi'], function(er, data) {
});
npm.on('log', function(message) {
console.log(message);
});
});
Обратите внимание, что первым аргументом функции установки является массив. Каждый элемент массива - это модуль, который npm попытается установить.
Более сложные способы использования можно найти в npm-cli.js
файле системы управления версиями.
npm install npm --save
. Пример отлично работает :)