我需要使用脚本中的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
选项?
答案 0 :(得分:2)
我认为npm.commands.update
中的第一个参数是一个参数列表。我从来没有以编程方式使用过npm,但是看看他们的源代码我会尝试以下内容:
npm.commands.update(['--save-dev'], function(err, d){
console.log(d);
});
此测试的引用是:https://github.com/npm/npm/blob/master/test/tap/update-save.js#L87
答案 1 :(得分:2)
加载配置时,您需要指定{save: true}
选项:
npm.load({save: true}, function() {
// update code
});
修改强>
'save-dev'
命令的npm.load
选项不起作用。这里有一个问题: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) {
});
});
});