È effettivamente possibile utilizzare npm a livello di programmazione, ed è stato descritto nelle revisioni precedenti della documentazione. Da allora è stato rimosso dalla documentazione ufficiale, ma esiste ancora nel controllo del codice sorgente con la seguente dichiarazione:
Sebbene npm possa essere utilizzato a livello di codice, la sua API è pensata per essere utilizzata solo dalla CLI e non viene fornita alcuna garanzia in merito alla sua idoneità per qualsiasi altro scopo. Se si desidera utilizzare npm per eseguire in modo affidabile alcune attività, la cosa più sicura da fare è invocare il comando npm desiderato con gli argomenti appropriati.
La versione semantica di npm fa riferimento alla stessa CLI, piuttosto che all'API sottostante. Non è garantito che l'API interna rimanga stabile anche quando la versione di npm indica che non sono state apportate modifiche sostanziali in base al semver .
Nella documentazione originale, il seguente è il codice di esempio fornito:
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)
// command succeeded, and data might have some info
})
npm.registry.log.on('log', function (message) { ... })
})
Poiché npm esiste nella node_modules
cartella, puoi usarlo require('npm')
per caricarlo come qualsiasi altro modulo. Per installare un modulo, vorrai usare npm.commands.install()
.
Se hai bisogno di guardare nel codice sorgente, è anche su GitHub . Ecco un esempio funzionante completo del codice, che è l'equivalente dell'esecuzione npm install
senza argomenti della riga di comando:
var npm = require('npm');
npm.load(function(err) {
// handle errors
// install module ffi
npm.commands.install(['ffi'], function(er, data) {
// log errors or data
});
npm.on('log', function(message) {
// log installation progress
console.log(message);
});
});
Notare che il primo argomento della funzione di installazione è un array. Ogni elemento dell'array è un modulo che npm tenterà di installare.
Un utilizzo più avanzato può essere trovato nel npm-cli.js
file sul controllo del codice sorgente.
npm install npm --save
prima. L'esempio funziona alla grande :)