2016-06-04 4 views
6

Мне нужно использовать обновление 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 через код?

ответ

2

Вы должны указать {save: true} опцию при загрузке конфигурации:

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

Edit:

'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) { 

    }); 
    }); 
}); 
+0

Это работает !! но он ничего не делает с devdependencies ... Я попытался использовать {save: true, dev: true}/{'--save-dev': true}/{save-dev: true} ... ни один из них работа ..... Есть ли способ обновить зависимости dev – Krishnaveni

+2

Я подтвердил, что 'save-dev: true' не работает. Работа вокруг будет заключаться в использовании 'npm install' вместо' npm update'. – gnerkus

+0

Работа вокруг заключается в том, чтобы переустановить устаревшие модули: -> обновить зависимости dev в package.json – Krishnaveni

2

Я думаю, что первый аргумент в npm.commands.update - это список аргументов. Я никогда не использовал НПМ программно, но, глядя на их исходный код, который я хотел бы попробовать следующее:

npm.commands.update(['--save-dev'], function(err, d){ 
    console.log(d); 
}); 

Ссылка на этот тест: https://github.com/npm/npm/blob/master/test/tap/update-save.js#L87

+0

Это не сработало .... он говорит неопределенные – Krishnaveni

+0

ли вы посмотрите на ссылку я вставил? Это может помочь узнать, как его использовать. – Filype

+0

@Krishnaveni: Можете ли вы попробовать '{saveDev: true}' вместо '['--save-dev']'? – Filype

Смежные вопросы