以编程方式完成Node临时npm安装

3

我希望能够在Node应用程序启动后使用编程方式npm install安装一个包。理想情况下,这个包不会放到我的node_modules文件夹中,而是会在运行时自动删除。

npm支持编程方式安装,但似乎实际上将模块保存到了node_modules中。此外,让整个npm(一个庞大的模块)成为这种要求的必须条件有些困难。然而,当我查看源代码时,npm install部分使用了大量的模块,并且无法轻松地复制。

是否有其他模块符合此要求?


2
嗯...把它安装到node_modules,然后再移动到另一个目录怎么样? - Alexander R.
那是正确的思路。我基本上最终做到了那样。 - dthree
1个回答

3

通过NPM,您可以将其安装到路径中,并且有这个巧妙的temp模块可以帮助在跨平台时完成此操作:

var temp = require('temp')
  , npm = require('npm')
  ;

function use(module, cb) {
  npm.load({}, function(){
    npm.commands.install(temp.dir, [module], function(err, data){
      var dir = data[0][1];
      var mod = require(__dirname + '/' + dir);
      cb(mod);
    });  
  })
}

use('lodash', function(_){
  // ... do things.
});

如果你愿意的话,temp有一个clean函数,可以稍后清理临时目录。

截至2022年,此解决方案已不再适用,npm >8.0.0已弃用编程API,因此项目中的var npm = require("npm");不再可行。 - Sorin GFS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接