De hecho, es posible usar npm mediante programación, y se describió en revisiones anteriores de la documentación. Desde entonces se ha eliminado de la documentación oficial, pero todavía existe en el control de código fuente con la siguiente declaración:
Aunque npm se puede utilizar de forma programática, su API está diseñada para ser utilizada únicamente por la CLI y no se ofrecen garantías con respecto a su idoneidad para cualquier otro propósito. Si desea utilizar npm para realizar alguna tarea de manera confiable, lo más seguro es invocar el comando npm deseado con los argumentos adecuados.
La versión semántica de npm se refiere a la CLI en sí, en lugar de a la API subyacente. No se garantiza que la API interna permanezca estable incluso cuando la versión de npm indique que no se han realizado cambios importantes según semver .
En la documentación original, el siguiente es el ejemplo de código que se proporcionó:
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) { ... })
})
Dado que npm existe en la node_modulescarpeta, puede usarlo require('npm')para cargarlo como cualquier otro módulo. Para instalar un módulo, querrá usar npm.commands.install().
Si necesita buscar en la fuente, también está en GitHub . Aquí hay un ejemplo de trabajo completo del código, que es el equivalente a ejecutarse npm installsin ningún argumento de línea de comandos:
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);
});
});
Tenga en cuenta que el primer argumento de la función de instalación es una matriz. Cada elemento de la matriz es un módulo que npm intentará instalar.
Se puede encontrar un uso más avanzado en el npm-cli.jsarchivo sobre control de código fuente.
npm install npm --saveprimero. El ejemplo funciona muy bien :)