क्या मुझे अपने परीक्षण .npmignore करना चाहिए?


91

वास्तव में मुझे क्या करना चाहिए .npmignore?

टेस्ट? सामग्री की तरह है .travis.yml, .jshintrc? मॉड्यूल (रीडमी को छोड़कर) चलाते समय किसी भी चीज की आवश्यकता नहीं है?

मुझे इस पर कोई मार्गदर्शन नहीं मिल रहा है।


4
npm install yourlibraryउदाहरण के लिए .travis.ymlऔर उदाहरण के लिए.jshintrc
lante

वास्तव में? यहां तक ​​कि एक रीडमी? क्या यह कहीं भी आधिकारिक तौर पर अनुशंसित है?
कलमा

2
README स्वचालित रूप से .npmignoreया "files"( docs.npmjs.com/files/package.json#files ) की परवाह किए बिना शामिल है ।
निकोलस फंटोन

जवाबों:


86

जैसा कि आपने शायद पाया, एनपीएम वास्तव में विशेष रूप से यह नहीं बताता है कि वहां क्या होना चाहिए, बल्कि उनके पास अनदेखा-डिफ़ॉल्ट फ़ाइलों की एक सूची है । बहुत से लोग इसका उपयोग भी नहीं करते हैं क्योंकि यदि आपके पास मौजूद नहीं है तो डिफ़ॉल्ट रूप से .gitignoreइसे अनदेखा कर दिया npmजाता .npmignoreहै। इसके अतिरिक्त, कई फाइलें सेटिंग्स की परवाह किए बिना पहले से ही नजरअंदाज कर दी जाती हैं और कुछ फाइलों को हमेशा नजरअंदाज किए जाने से बाहर रखा जाता है, जैसा कि ऊपर दिए गए लिंक में बताया गया है।

हमेशा क्या होना चाहिए, इस पर बहुत अधिक आधिकारिक नहीं है क्योंकि यह मूल रूप से एक सबसेट है .gitignore, लेकिन मैं 5-ईश वर्षों के लिए नोड का उपयोग करने से क्या इकट्ठा करता हूं, यहां मैं क्या कर रहा हूं।

नोट: उत्पादन से मेरा मतलब है कि किसी भी समय आपके मॉड्यूल का उपयोग किसी व्यक्ति द्वारा किया जाता है न कि स्वयं मॉड्यूल पर विकसित करने के लिए।


क्रॉस-संकलित स्रोतों को पूर्व-रिलीज़ करें

  • पेशेवरों : यदि आप जावास्क्रिप्ट में क्रॉस-कंपाइल करने वाली भाषा का उपयोग कर रहे हैं, तो आप रिलीज़ से पहले precompile कर सकते हैं और .coffeeअपने पैकेज में फ़ाइलों को शामिल नहीं कर सकते हैं लेकिन उन्हें अपने गिट रिपॉजिटरी में ट्रैक करते रहें।

फ़ाइल बचे हुए बनाएँ

  • पेशेवरों : ऐसी चीजों का उपयोग करने वाले लोगों के node-gypपास ऑब्जेक्ट फाइलें हो सकती हैं जो एक निर्माण के दौरान उत्पन्न होती हैं जिन्हें कभी भी पैकेज में नहीं जाना चाहिए।
  • विपक्ष : यह हमेशा .gitignoreवैसे भी जाना चाहिए । यदि आप एक .npmignoreफाइल का उपयोग कर रहे हैं तो आपको इन चीजों को यहाँ रखना होगा क्योंकि यह .gitignorenpm के दृष्टिकोण से ओवरराइड करता है।

टेस्ट

  • पेशेवरों : अपने उत्पादन कोड में कम सामान।
  • विपक्ष : आप लाइव वातावरण पर परीक्षण नहीं चला सकते हैं स्लिम मौका में एक सिस्टम-विशिष्ट विफलता है, जैसे नोड के चल रहे संस्करण के बाहर एक परीक्षण विफल होने का कारण बनता है।

सतत एकीकरण सेटिंग्स / मेटा फ़ाइलें

  • पेशेवरों : फिर से, कम सामान। .travis.ymlकोड का उपयोग, परीक्षण या देखने के लिए आवश्यक चीजें जैसे कि ।

गैर-रीडमी डॉक्स और कोड उदाहरण

  • पेशेवरों : कम सामान। कुछ लोग स्कूल-ऑफ़-थिंक में मौजूद होते हैं जहाँ अगर आप अपने रीडमे में कम से कम न्यूनतम व्यवहार्य कार्यक्षमता व्यक्त नहीं कर सकते हैं, तो आपका मॉड्यूल बहुत बड़ा है।
  • विपक्ष : लोग अपने स्वयं के फ़ाइल सिस्टम पर संपूर्ण दस्तावेज़ और कोड उदाहरण नहीं देख सकते हैं। उन्हें रिपॉजिटरी (जिसमें इंटरनेट कनेक्शन की भी आवश्यकता होती है) पर जाना होगा।

गितुब-पृष्ठ वस्तु

  • पेशेवरों : यदि आप अपने मॉड्यूल का उपयोग करते हैं तो आपको निश्चित रूप से अपनी रिलीज़ को CNAMEफ़ाइलों या प्लेसहोल्डर के साथ लिटाने की ज़रूरत नहीं है, index.htmlयदि आप एक gh-pagesरिपॉजिटरी के रूप में डबल-ड्यूटी का काम करते हैं ।

bower.json और दोस्त

  • पेशेवरों : यदि आप रिलीज से पहले अपनी निर्भरता में निर्माण करने का निर्णय लेते हैं, तो आपको बोवर स्थापित करने के लिए अंतिम-उपयोगकर्ता की आवश्यकता नहीं है, फिर उसके साथ और चीजें स्थापित करें। मैं व्यक्तिगत रूप से उस सामान को पैकेज में रखूंगा। जब मैं npm installए करता हूं, मुझे केवल एनपीएम पर भरोसा करना चाहिए और कोई अन्य बाहरी स्रोत नहीं होना चाहिए।

मूल रूप से, आपको कभी भी इसका उपयोग करना चाहिए यदि कोई ऐसी चीज है जिसे आप अपने npm पैकेज से बाहर रखना चाहते हैं, लेकिन अपने npm रिपॉजिटरी से बाहर नहीं। यह वस्तुओं की एक लंबी सूची नहीं है, लेकिन npm कार्यक्षमता में निर्माण करेगा, न कि लोगों को अपने पैकेज में अप्रासंगिक वस्तुओं के साथ फंसने से।


क्या पैकेज.जॉन फ़ाइल से गैर-उपयोग योग्य स्क्रिप्ट को निकालने का कोई तरीका नहीं है। जैसे परीक्षण स्क्रिप्ट? मैं सब कुछ हटाने के लिए थोड़ा गड़बड़ महसूस करता हूं लेकिन स्क्रिप्ट को फ़ाइल में
रखता हूं

नहीं वहाँ नहीं है। आप उन्हें मुख्य रूप से वैसे भी NPM के लिए package.json से हटा सकते हैं और यदि आप केवल परीक्षण चला रहे हैं, तो आप उन्हें चलाने के लिए मूल कमांड के माध्यम से एक्सेस कर सकते हैं।
सैमटी

63

मैं लांटे के संक्षिप्त और वाक्यगत जवाब और सैमटी के बड़े जवाब से सहमत हूं :

  • आपको अपने परीक्षणों को अपने पैकेज में शामिल नहीं करना चाहिए।
  • आपके पैकेज में केवल उत्पादन रनटाइम फ़ाइलें होनी चाहिए।
  • यह आपके पैकेज को अधिक सरल और तेज गति से डाउलोड किया जाएगा।

उन उत्तरों में मेरा योगदान:

.npmignore पैकेज फ़ाइल चयन को प्राप्त करने का ब्लैक लिस्ट तरीका है। लेकिन अधिक व्यावहारिक तरीके से, आप अपने पैकेज में फ़ाइलों के क्षेत्र का उपयोग करके अपने पैकेज में शामिल की जाने वाली फ़ाइलों को श्वेतसूची में रख सकते हैं ।

{
  "files": [
    "lib/",
    "index.js"
  ]
}

मुझे लगता है कि यह सरल, भविष्य का प्रमाण है और बेहतर शब्दार्थ है;)


3
... याद रखना आसान नहीं है और कम दुर्घटना-प्रवणता का उपयोग करने के लिए (यदि आप उतने ही भुलक्कड़ हैं जितना मैं हो सकता है)। टिप के लिए धन्यवाद, यह बहुत अच्छा है।
कॉनर

2
मुझे यह तरीका पसंद है।
ब्रैडी होल्ट

2
मुझे लगता है कि आप "index.js" को भी छोड़ सकते हैं, यह मानते हुए कि यह आपके पैकेज में 'मुख्य' फ़ाइल है। Json :)
बेन जॉर्ज

छवियों और अनावश्यक दस्तावेजों की अनदेखी ठीक है। लेकिन परीक्षणों की अनदेखी करना शायद एक अच्छा विचार नहीं है। कुछ अतिरिक्त KB को डाउनलोड करने में इतना समय नहीं लगता है और npm testसभी नोड_मॉड्यूल्स पर एक पुनरावर्ती कार्य करने से आपको संकेत मिल सकता है यदि कोई निश्चित वातावरण में कुछ अलग काम करता है।
adelriosantiago

3
@ NicolásFantone फ़ाइलें संपत्ति ग्लोब पैटर्न को भी स्वीकार करती हैं । तो हम बिना बनाये परीक्षण की फाइलों को अनदेखा कर सकते हैं .npmignorefiles: ["lib", "!lib/**/*.test.js"]। :)
सुरेशराज

15

बस स्पष्ट करने के लिए, कभी भी कोई करता है npm install your-library, npm उन सभी स्रोत फ़ाइलों को डाउनलोड करेगा जिन्हें रेपो में शामिल किया गया है, केवल उन फ़ाइलों को छोड़कर जिन्हें आप अपने में शामिल करते हैं .npmignore

जान लें कि आपके पुस्तकालय को स्थापित करने वाले लोगों को बस आपके पुस्तकालय को चलाने की आवश्यकता होगी, और कुछ भी आवश्यक नहीं होगा।

उदाहरण के लिए, जब कोई पुस्तकालय स्थापित करता है, तो शायद यह कि वह आपकी .travis.ymlया आपकी .jshintrcफाइलों, या यहां तक ​​कि कुछ छवियों, ग्रंट फ़ाइलों, प्रलेखन आदि की परवाह नहीं करता है ।

.npmignore आपके npm पैकेज को कम फ़ाइलें और तेज़ी से डाउनलोड होने दे सकता है


1
यहां की भावना अच्छी है, लेकिन स्पष्ट करने के लिए: .npmignoreजो डाउनलोड किया गया है उसे सीधे प्रभावित नहीं करता है , यह प्रभावित करता है कि आपके पैकेज में क्या जाता है जब आप npm प्रकाशित और अपलोड करते हैं। यह अप्रत्यक्ष रूप से डाउनलोड करने के लिए छोटी फाइलें बनाता है।
मार्क स्टोसबर्ग

2

अपने परीक्षण शामिल न करें। अक्सर परीक्षण 5x वास्तविक कोडबेस के आकार की तरह होते हैं। जब तक आपके परीक्षण गितुब, आदि पर हैं, तब तक यह काफी अच्छा है।

लेकिन आपको क्या करना चाहिए , इसके प्रकाशित प्रारूप में अपने एनपीएम पैकेज का परीक्षण करें । कुछ धूम्रपान परीक्षण बनाएं जो वास्तविक कोडबेस में रहते हैं, लेकिन परीक्षण सूट का हिस्सा नहीं हैं।

आप अपने पैकेज के परीक्षण के बारे में उसे टारबोल करने के बाद पढ़ सकते हैं, यहां: https://github.com/ORESoftware/r2g

वास्तव में एनपीएम को प्रकाशित किए बिना, एक `एनपीएम प्रकाशित` परिणाम का परीक्षण कैसे करें?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.