2012-04-22 18 views

Respuesta

6

Si estás en busca de los paquetes de la NGP actualmente instalados en el directorio de la aplicación, a continuación, se puede instalar el paquete de npm (npm install -g npm) y programaticallyls invocar para listar los paquetes instalados y los árboles de dependencias.

Obviamente, esto no tiene ninguna relación con si los paquetes instalados son realmente require 'd en la aplicación o no.

El uso no está bien documentado pero esto debería comenzar.

var npm = require('npm'); 

npm.load(function(err, npm) { 
    npm.commands.ls([], true, function(err, data, lite) { 
     console.log(data); //or lite for simplified output 
    }); 
}); 

ej .:

{ dependencies: 
    { npm: { version: '1.1.18', dependencies: [Object] }, 
    request: { version: '2.9.202' } } } 

De lo contrario, creo que la única otra opción es realizar una introspección del módulo module para obtener información relativa a las rutas de módulo actualmente cargados/caché. Sin embargo, esto definitivamente no parece haber sido desarrollado como una API pública. No estoy seguro de si hay alguna alternativa, por lo que me gustaría saber si hay alguna, por ejemplo,

var req = require('request'); // require some module for demo purposes 
var m = require('module'); 

// properties of m contain current loaded module info, e.g. m._cache 
+0

Esto parece workable.I'm va a dejar la pregunta abierta para un poco más para ver si alguien tiene sugerencias . ¡Gracias! – MrEvil

+0

Puede valer la pena preguntar en el canal de IRC node.js también .. http://nodejs.org/community/ –

2

creo que podría utilizar require-analyzer, qué tipo de obras de acuerdo con Isaacs (podría perder algunos). Puede escuchar esto en Nodeup's first podcast desde 11:55.

O podría probar James node-detective que probablemente encontrará sus dependencias mejor (pero no al ejecutar el código), sino a causa de la naturaleza dinámica de Javascript (12:46).

detective

Encuentra todas las llamadas a require() no importa cuán loco anidada usando un adecuada a pie de la AST.

PS: para exponer aquellas variables package.json a Node.js podría utilizar node-pkginfo

Cuestiones relacionadas