首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我能从Node.js中运行的javascript安装NPM包吗?

我能从Node.js中运行的javascript安装NPM包吗?
EN

Stack Overflow用户
提问于 2013-04-12 03:45:30
回答 8查看 54.4K关注 0票数 100

我可以从Node.js中运行的javascript文件安装NPM包吗?例如,我想有一个脚本,让我们称它为"script.js“,不管是不是...using NPM ...)安装一个通常可以通过NPM获得的包。在本例中,我想安装"FFI“。(npm安装ffi)

EN

回答 8

Stack Overflow用户

发布于 2013-04-12 03:48:43

是。您可以使用child_process来执行系统命令

代码语言:javascript
复制
var exec = require('child_process').exec,
    child;

 child = exec('npm install ffi',
 function (error, stdout, stderr) {
     console.log('stdout: ' + stdout);
     console.log('stderr: ' + stderr);
     if (error !== null) {
          console.log('exec error: ' + error);
     }
 });
票数 28
EN

Stack Overflow用户

发布于 2013-10-16 22:31:53

实际上,这可能有点简单

代码语言:javascript
复制
var exec = require('child_process').exec;
child = exec('npm install ffi').stderr.pipe(process.stderr);
票数 11
EN

Stack Overflow用户

发布于 2017-07-15 22:49:59

我花了一段时间尝试让第一个示例在项目目录中工作,在这里发布,以防其他人发现这一点。据我所知,NPM仍然可以很好地直接加载,但因为它假设了CLI,所以我们必须重复进行一些设置:

代码语言:javascript
复制
// this must come before load to set your project directory
var previous = process.cwd();
process.chdir(project);

// this is the part missing from the example above
var conf = {'bin-links': false, verbose: true, prefix: project}

// this is all mostly the same

var cli = require('npm');
cli.load(conf, (err) => {
    // handle errors
    if(err) {
        return reject(err);
    }

    // install module
    cli.commands.install(['ffi'], (er, data) => {
        process.chdir(previous);
        if(err) {
            reject(err);
        }
        // log errors or data
        resolve(data);
    });

    cli.on('log', (message) => {
        // log installation progress
        console.log(message);
    });
});
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15957529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档