Rzeczywiście jest możliwe programowe użycie npm i zostało to nakreślone w starszych wersjach dokumentacji. Od tego czasu został usunięty z oficjalnej dokumentacji, ale nadal istnieje w kontroli źródła z następującym stwierdzeniem:
Chociaż npm może być używany programowo, jego interfejs API jest przeznaczony do użytku tylko przez interfejs CLI i nie ma żadnych gwarancji dotyczących jego przydatności do jakichkolwiek innych celów. Jeśli chcesz użyć npm do niezawodnego wykonania jakiegoś zadania, najbezpieczniej jest wywołać żądane polecenie npm z odpowiednimi argumentami.
Semantyczna wersja npm odnosi się do samego interfejsu wiersza polecenia, a nie do bazowego interfejsu API. Nie ma gwarancji, że wewnętrzny interfejs API pozostanie stabilny, nawet jeśli wersja npm wskazuje, że nie wprowadzono żadnych istotnych zmian zgodnie z semver .
W oryginalnej dokumentacji przedstawiono przykładowy kod:
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) { ... })
})
Ponieważ npm istnieje w node_modules
folderze, możesz go użyć require('npm')
do załadowania go jak każdego innego modułu. Aby zainstalować moduł, będziesz chciał użyć npm.commands.install()
.
Jeśli chcesz zajrzeć do źródła, to również jest na GitHubie . Oto kompletny działający przykład kodu, który jest odpowiednikiem uruchomienia npm install
bez żadnych argumentów wiersza poleceń:
var npm = require('npm');
npm.load(function(err) {
npm.commands.install(['ffi'], function(er, data) {
});
npm.on('log', function(message) {
console.log(message);
});
});
Zauważ, że pierwszym argumentem funkcji install jest tablica. Każdy element tablicy to moduł, który npm spróbuje zainstalować.
Bardziej zaawansowane zastosowania można znaleźć w npm-cli.js
pliku dotyczącym kontroli źródła.
npm install npm --save
pierwsza. Przykład działa świetnie :)