नाम
जब तक हम रिपॉजिटरी में पैकेज प्रकाशित नहीं करते हैं, तब तक क्षेत्र को भी स्कोर किया जा सकता है। सवाल यह है कि यह फ़ील्ड इंस्टॉलेशन फ़ाइल का नामकरण के लिए उपयोग करने के लिए सुविधाजनक है या, उदाहरण के लिए, इसके वेब पेज पर उत्पाद का नाम प्रदर्शित करने के लिए। सामान्य तौर पर, "आप एक नौका को क्या कहते हैं, .."
संस्करण
मुख्य विचार कार्यक्षमता को बढ़ाते हुए, बग को ठीक करते हुए संस्करण संख्या को बढ़ाना नहीं है, ... दुर्भाग्य से, हमारे कार्यालय में आप अभी भी अपरिवर्तित संस्करण 0.0.0 के साथ उत्पाद पा सकते हैं। और फिर अनुमान लगाओ कि क्लाइंट के लिए किस तरह की कार्यक्षमता काम करती है ...
मुख्य
यह
फ़ील्ड बताती है कि हमारा एप्लिकेशन कब शुरू होगा (`npm start`)। यदि पैकेज का उपयोग एक निर्भरता के रूप में किया जाता है, तो हमारे मॉड्यूल को किसी अन्य एप्लिकेशन द्वारा उपयोग करते समय कौन सी फ़ाइल आयात की जाएगी। वर्तमान निर्देशिका वह निर्देशिका है जहाँ `package.json` फ़ाइल स्थित है।
और यह भी, यदि हम, उदाहरण के लिए,
vscode का उपयोग
करते हैं , तो इस फ़ील्ड में निर्दिष्ट फ़ाइल को लॉन्च किया जाएगा जब डिबगर को बुलाया जाएगा या जब "निष्पादित" कमांड चलाया जाएगा।
एक्सटेंशन ".js" छोड़ा जा सकता है। यह बल्कि सभी संभावित उपयोग के मामलों का एक परिणाम है, इसलिए यह सीधे प्रलेखन में वर्तनी नहीं है।
इंजन
इस फ़ील्ड में टपल शामिल है: {"नोड":
संस्करण , "एनपीएम":
संस्करण , ...}।
मैं "नोड" और "एनपीएम" क्षेत्रों को जानता हूं। वे हमारे आवेदन के लिए आवश्यक नोड.जेएस और एनपीएम के संस्करणों को निर्धारित करते हैं। Npm इंस्टॉल कमांड को चलाकर संस्करणों की जाँच की जाती है।
निर्भरता संकुल के संस्करण के निर्धारण के लिए मानक वाक्यविन्यास समर्थित है: उपसर्ग (एकल संस्करण) के बिना, उपसर्ग "~" (संस्करण की पहली दो संख्याओं का मिलान होना चाहिए) और उपसर्ग "^" (केवल संस्करण का पहला नंबर मिलान कर सकता है)। यदि कोई उपसर्ग है, तो संस्करण इस क्षेत्र में निर्दिष्ट से अधिक या उसके बराबर होना चाहिए। संस्करणों की बस एक सूची; स्पष्ट संकेत अधिक, कम, ... आदि। भी काम करता है।
अस्वीकरण। "एनपीएम इंस्टॉल" केवल "इंजन-सख्त" मोड सक्षम होने पर "इंजन" में निर्दिष्ट संस्करणों की जांच करता है। हम इसे प्रत्येक प्रोजेक्ट के लिए शामिल करते हैं, लाइन के साथ .npmrc फ़ाइल को जोड़ना: "इंजन-सख्त = सच"। एक बार, "npm इंस्टॉल" ने यह चेक डिफ़ॉल्ट रूप से किया।
कुछ कंटेनर, कम से कम प्रलेखन में लिखते हैं कि उपयुक्त संस्करण डिफ़ॉल्ट रूप से उपयोग किए जाएंगे। इस मामले में, हम Azure के बारे में बात कर रहे हैं।
एक उदाहरण:
"engines": { "node": "~8.11",
नियमित "रेक"
और राजा नंगा है!
यह क्लाइंट के साथ बार-बार सहमत था कि `नोड.जेएस` का आवश्यक संस्करण कम से कम 8. होना चाहिए। जब आवेदन के प्रारंभिक संस्करण वितरित किए गए, तो सब कुछ काम किया। "एक दिन" ग्राहक पर नए संस्करण की डिलीवरी के बाद, अनुप्रयोग चलना बंद हो गया। सब कुछ हमारे परीक्षणों में काम आया।
समस्या यह थी कि इस संस्करण में हमने कार्यक्षमता का उपयोग करना शुरू किया था जो केवल संस्करण 8 नोड से समर्थित था। "इंजन" फ़ील्ड नहीं भरी गई थी, इसलिए किसी ने पहले ध्यान नहीं दिया था कि क्लाइंट के पास नोड का एक प्राचीन संस्करण है। (Azure वेब सेवाएँ डिफ़ॉल्ट)।
स्क्रिप्ट
फ़ील्ड में फ़ॉर्म का एक टपल होता है: {"script1":
script1 , "script2":
script2 , ...}।
मानक स्क्रिप्ट हैं जो किसी दिए गए स्थिति में चलती हैं। उदाहरण के लिए, "एनपीएम इंस्टॉल" चलाने के बाद "इंस्टॉल" स्क्रिप्ट निष्पादित होगी। यह बहुत सुविधाजनक है, उदाहरण के लिए, काम करने के लिए आवेदन के लिए आवश्यक कार्यक्रमों की उपलब्धता की जांच करना। या, कहें, हमारी वेब सेवा के माध्यम से उपलब्ध सभी स्थिर फ़ाइलों को संपीड़ित करने के लिए ताकि उन्हें मक्खी पर संकुचित न करना पड़े।
इस मामले में, आप केवल मानक नामों तक सीमित नहीं हो सकते। एक मनमानी स्क्रिप्ट को निष्पादित करने के लिए, आपको "एनपीएम रन
स्क्रिप्ट-नाम " चलाने की आवश्यकता है।
सभी प्रयुक्त लिपियों को एक स्थान पर एकत्रित करना सुविधाजनक है।
एक उदाहरण:
"scripts": { "install": "node scripts/install-extras", "start": "node src/well/hidden/main/server extra_param_1 extra_param_2", "another-script": "node scripts/another-script" }
PS विस्तार ".js" को ज्यादातर मामलों में छोड़ा जा सकता है।