Il est en effet possible d'utiliser npm par programme, et cela a été décrit dans les anciennes révisions de la documentation. Il a depuis été supprimé de la documentation officielle, mais existe toujours sur le contrôle de code source avec la déclaration suivante:
Bien que npm puisse être utilisé par programme, son API est destinée à être utilisée par la CLI uniquement, et aucune garantie n'est donnée concernant son aptitude à d'autres fins. Si vous souhaitez utiliser npm pour effectuer une tâche de manière fiable, la chose la plus sûre à faire est d'appeler la commande npm souhaitée avec les arguments appropriés.
La version sémantique de npm fait référence à l'interface de ligne de commande elle-même, plutôt qu'à l'API sous-jacente. L'API interne n'est pas garantie de rester stable même lorsque la version de npm indique qu'aucune modification de rupture n'a été apportée selon semver .
Dans la documentation d'origine, voici l'exemple de code fourni:
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) { ... })
})
Puisque npm existe dans le node_modules
dossier, vous pouvez l'utiliser require('npm')
pour le charger comme n'importe quel autre module. Pour installer un module, vous voudrez utiliser npm.commands.install()
.
Si vous avez besoin de chercher dans la source, c'est également sur GitHub . Voici un exemple de travail complet du code, qui équivaut à une exécution npm install
sans aucun argument de ligne de commande:
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);
});
});
Notez que le premier argument de la fonction d'installation est un tableau. Chaque élément du tableau est un module que npm tentera d'installer.
Une utilisation plus avancée peut être trouvée dans le npm-cli.js
fichier sur le contrôle de code source.
npm install npm --save
abord. L'exemple fonctionne très bien :)