2013-09-02 9 views
13

आप एक NPM पैकेज स्थापित और उचित निर्भरता संपत्ति में अपने package.json फ़ाइल में पैकेज लिखने के लिए --save, --save-dev या --save-optional विकल्पों का उपयोग करते हैं, पूरी फ़ाइल 2-अंतरिक्ष खरोज के साथ फिर से लिखा जा करने के लिए प्रकट होता है:क्या मैं एनपीएम इंस्टॉल कर सकता हूं एक निश्चित पैकेज.जेसन प्रारूप का पालन करें?

$ cat package.json 
{ 
    "name": "my-package" 
} 

$ npm install --save another-package && cat package.json 
{ 
    "name": "my-package", 
    "dependencies": { 
    "another-package": "~0.1.5" 
    } 
} 

क्या एनपीएम मौजूदा प्रारूप का पालन करने के लिए कोई तरीका है, या package.json फ़ाइल के लिए कस्टम प्रारूप (उदाहरण के लिए 4-स्पेस इंडेंटेशन) निर्दिष्ट करने का कोई तरीका है?

मुझे npm options documentation में कुछ भी नहीं मिला।

उत्तर

10

npm source के माध्यम से खुदाई करने के बाद, दुर्भाग्य से मेरे प्रश्न का उत्तर निश्चित रूप से "नहीं" है। जब npm install "बचाने" विकल्पों में से एक, following happens साथ क्रियान्वित किया जाता है:

fs.readFile(saveTarget, function (er, data) { 
    try { 
    data = JSON.parse(data.toString("utf8")) 
    } catch (ex) { 
    er = ex 
    } 
    // ... 
    data = JSON.stringify(data, null, 2) + "\n" 
    fs.writeFile(saveTarget, data, function (er) { 
    cb(er, installed, tree, pretty) 
    }) 
}) 

महत्वपूर्ण लाइन JSON.stringify करने के लिए कॉल है। तीसरे तर्क के साथ stringify का आविष्कार करते समय, लौटाई गई स्ट्रिंग इंडेंटेशन निर्दिष्ट रिक्त स्थान के साथ स्वरूपित होती है।

चूंकि आंतरिक रूप से एनपीएम द्वारा उपयोग किए गए मान को कस्टमाइज़ करने का कोई तरीका नहीं है, इसलिए यह व्यवहार वर्तमान में कॉन्फ़िगर करने योग्य नहीं है।

+4

एनपीएम पुल अनुरोध स्वीकार करता है, हालांकि। 'Package.json' लिखने वाले सभी एनपीएम कमांड के लिए एक फॉर्मेटर प्लग करने में सक्षम होना बहुत अच्छा होगा, इसलिए हम इसकी आवश्यकता के बजाय' आवश्यकता ('प्रारूप-जेसन') चुनने, 'diffy'' करने में सक्षम होंगे। हार्ड कोडित स्ट्रिंगफायर। – ecmanaut

+0

@ecmanaut - क्या इस मुद्दे को ठीक करने की कोशिश कर रहे पीआरएस रहे हैं? –

+0

आईआईआरसी, मैंने जांच की कि क्या कोई स्वीकार किया जाएगा, और एक फर्म नंबर मिला, और उस पर छोड़ दिया। (तो: मुझसे नहीं, लेकिन शायद अन्य लोगों से।) – ecmanaut

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