javascript - 如何以编程方式更新 Node 模块

标签 javascript node.js npm

我需要通过脚本使用 npm 更新。下面是我的代码:

var npm = require('npm');
npm.load(function () {
npm.commands.outdated({json: true}, function (err, data) {
    //console.log(data);
    npm.commands.update(function(err, d){
        console.log(d);
    });
   });
});

当我运行此脚本时,模块会更新,但 package.json 中未指示新版本。

当我从命令行运行 npm update --save-dev 时,文件夹和 package.json 得到更新。

请建议如何通过脚本实现这一点。 如何通过代码使用 --save-dev 选项?

最佳答案

加载配置时需要指定{save: true}选项:

npm.load({save: true}, function() {
  // update code
});

编辑:

npm.load 命令的 'save-dev' 选项不起作用。这里有一个问题:https://github.com/npm/npm/issues/2369 .

解决方法是重新安装过时的模块:

npm.load({'save-dev': true}, function () {
  npm.commands.outdated(function (err, rawOutdated) {
    var outdated = rawOutdated.map(function (module) {
      return module[1];
    });
    npm.commands.install(outdated, function(err, d) {

    });
   });
});

关于javascript - 如何以编程方式更新 Node 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625951/

相关文章:

javascript - 如何更改IE浏览器的标志?

node.js - 记录所有在应用程序中触发的 mongoose 查询

javascript - 为什么我无法在 Node REPL 中打开严格检查?

node.js - 尝试安装 body-parser 时出错

javascript - 如何在 Nodejs 中将任何城市/国家组合转换为时区?

javascript - 二维数组返回错误值

javascript - 文件上传更改事件触发次数过多

javascript - 如何从html页面调用python命令?

javascript - NPM rimraf - 文件夹丢失时继续执行(停止退出代码 1)

node.js - 从自己的 gitlab 服务器安装 Node 模块