2016-06-04 23 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 चलाता हूं, फ़ोल्डर्स और पैकेज.जेसन अपडेट हो जाते हैं।

कृपया सुझाव दें कि यह स्क्रिप्ट के माध्यम से कैसे प्राप्त किया जा सकता है। मैं कोड के माध्यम से --save-dev विकल्प का उपयोग कैसे कर सकता हूं?

उत्तर

2

आप जब लोड हो रहा है {save: true} विकल्प का उल्लेख करना होगा config:

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

संपादित करें:

कमांड के लिएविकल्प काम नहीं करता है। इसके बारे में यहां एक समस्या है: 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} का उपयोग करने का प्रयास किया ... उनमें से कोई भी नहीं काम ..... क्या देव निर्भरताओं को अद्यतन करने का कोई तरीका है – Krishnaveni

+2

मैंने पुष्टि की है कि 'save-dev: true' काम नहीं करता है। 'Npm अपडेट' के बजाय' npm install' का उपयोग करना होगा। – gnerkus

+0

पुराना मॉड्यूल दोबारा स्थापित करना है: -> पैकेज.जेसन में देव निर्भरताओं को अद्यतन किया गया है – Krishnaveni

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

+0

यह काम नहीं किया .... यह अनिर्धारित – Krishnaveni

+0

कहते हैं कि आप लिंक पर एक नज़र मैं चिपकाया किया है:

आसपास काम पुराना मॉड्यूल को फिर से स्थापित करने के लिए है? इससे यह पता लगाने में मदद मिल सकती है कि इसका उपयोग कैसे किया जाए। – Filype

+0

@ कृष्णावेनी: क्या आप '['--save-dev'] के बजाय' {saveDev: true} 'आज़मा सकते हैं? – Filype

संबंधित मुद्दे