मैं npm संकुल के आकार को कैसे देखूँ?


129

जब मैं एनपीएम पर पैकेज खोजता हूं, तो मैं पैकेज आकार (केबी या एमबी, आदि में) देखना चाहूंगा। एनपीएम इस जानकारी को नहीं दिखाता है।

मैं यह कैसे निर्धारित कर सकता हूं कि मेरी परियोजना में एनपीएम पैकेज कितना प्रस्फुटित होगा?


इस बातचीत को हाइजैक करना क्योंकि मैं एक ऐसे टूल की ओर इशारा करना चाहता हूं जो आपकी मशीन से खाली जगह का दावा करने में मदद करता है। जाहिरा तौर node_modulesपर मेरी मशीन पर atm 21bg पर कब्जा; npkillक्या आप ऐसा करने में मदद कर सकते हैं ! [यहां छवि विवरण दर्ज करें ] ( i.stack.imgur.com/BKbyU.png )
अहमद अल्फी

जवाबों:


181

यदि आप शायद मापना चाहते हैं तो यह प्रभाव एक पैकेज है यदि आप इसे अपने ऐप बंडल में जोड़ना चाहते थे। अधिकांश अन्य उत्तर केवल स्रोत फ़ाइलों के आकार का अनुमान लगाएंगे, जो शायद इनलाइन टिप्पणियों, लंबे संस्करण आदि के कारण गलत हैं।

एक छोटी सी उपयोगिता है जो मैंने बनाई है कि आप इसे बंडल में लाने के बाद आपको पैकेज का न्यूनतम + gzipped आकार बताएंगे -

https://bundlephobia.com


5
धन्यवाद! यह एक बहुत अच्छा उपयोग है!
BaronVonKaneHoffen

3
सुंदर यूआई! धन्यवाद यह वही है जो मैं देख रहा था। सुपर बड़े पैकेज पर हमेशा के लिए ले जाता है।
प्रोटॉएन्जेलियन

3
@ ब्लेक को वापस होना चाहिए
शुभम कनोडिया

6
यह लिंक: https://cost-of-modules.herokuapp.comअब https://bundlephobia.com एक बहुत ही उपयोगी टूल btw के लिए निर्देशित करता है ।
एडम वेबर

4
यह इतना ठंडा है कि इसे प्रत्येक पैकेज के लिए
npm

69

इस कॉस्ट-ऑफ-मॉड्यूल प्रोजेक्ट पर एक नज़र डालें । यह एक npm पैकेज है जो एक पैकेज के आकार और बच्चों की संख्या को सूचीबद्ध करेगा।

स्थापना: npm install -g cost-of-modules

उपयोग: cost-of-modulesउस निर्देशिका में चलाएं जिसमें आप काम कर रहे हैं।

यहाँ छवि विवरण दर्ज करें


2
थोड़ा ओवरकिल, यह गणना से पहले अपने सभी मॉड्यूल को फिर से स्थापित करने की आवश्यकता है। लेकिन काम करता है।
pdem

7
इस पैकेज का उपयोग न करें - यह nodemodules.bak नामक एक विरूपण साक्ष्य फ़ोल्डर बनाता है जो बदसूरत दुष्प्रभाव पैदा करता है
Nth.gol

22

मैंने एक टूल बनाया है, npm डाउनलोड साइज़ , जो किसी दिए गए npm पैकेज के लिए टैरबॉल साइज़ का निरीक्षण करता है, जिसमें डिपेंडेंसी ट्री में सभी टारबॉल शामिल हैं। यह आपको लागत (स्थापना समय, डिस्क स्थान, रनटाइम संसाधन, सुरक्षा ऑडिट, ...) का एक विचार देता है जो निर्भरता को सामने से जोड़ता है।

वेबपैक का आकार डाउनलोड करें

ऊपर की छवि में, टारबॉल का आकार पैकेज का टारगेज है, और कुल आकार सभी टारबॉल का आकार है। उपकरण बहुत बुनियादी है, लेकिन यह वही करता है जो यह कहता है।

एक cli टूल भी उपलब्ध है। आप इसे इस तरह स्थापित कर सकते हैं:

npm i -g download-size

और इसे इस तरह से उपयोग करें:

$ download-size request
request@2.83.0: 1.08 MiB

स्रोत कोड Github पर उपलब्ध है: एपीआई , क्ली टूल और वेब क्लाइंट


20

मैंने पैकेज Phobia को इस वर्ष की शुरुआत में npmjs.com में पैकेज आकार की जानकारी प्राप्त करने की आशा के साथ बनाया और समय के साथ पैकेज ब्लोट को भी ट्रैक किया।

https://packagephobia.com

img

इसे npm installसर्वर-साइड निर्भरता जैसे expressया देव निर्भरता के लिए चलाने के बाद डिस्क स्थान को मापने के लिए डिज़ाइन किया गया है jest

आप इस उपकरण और इसी तरह के अन्य उपकरणों के बारे में यहां पढ़ सकते हैं: https://github.com/styfle/packagephobia


अद्यतन 2020

"अनपैक्ड साइज" (मूल रूप से पब्लिश साइज) npmjs.com वेबसाइट पर "टोटल फाइल्स" के साथ उपलब्ध है। हालांकि, यह पुनरावर्ती अर्थ नहीं है जो npm installसंभवतः बहुत बड़ा होगा क्योंकि एक पैकेज की संभावना कई पैकेजों पर निर्भर करती है (इस प्रकार पैकेज फोबिया अभी भी प्रासंगिक है)।

एक सुविधा के लिए एक लंबित आरएफसी भी है जो सीएलआई से इस जानकारी को प्रिंट करता है।


यह बहुत अच्छा है, लेकिन इसके परिणाम बंडललेफोबिया से इतने भिन्न क्यों हैं? जैसे lodash.lowerfirst के लिए परिणामों की तुलना
Danyal Aytekin

2
@DanyalAytekin क्योंकि वे विभिन्न चीजों को माप रहे हैं। संक्षिप्त उत्तर: यदि आप फ्रंट-एंड पैकेज का उपयोग कर रहे हैं तो बंडलफोबिया का उपयोग करें। यदि आप एक बैक-एंड पैकेज का उपयोग कर रहे हैं तो पैकेजफोबिया का उपयोग करें। यदि आपकी रुचि है, तो रीडमी में अधिक विवरण हैं।
स्टाइलफेल

16

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

मैं निश्चित रूप से पहला विकल्प सुझाता हूं। यह इंटरेक्टिव ट्रेप में आकार दिखाता है। यह आपकी बंडल फ़ाइल में पैकेज का आकार खोजने में आपकी सहायता करता है।

वेबपैक बंडल विश्लेषक

इस पोस्ट में अन्य उत्तर आपको परियोजना का आकार दिखाते हैं, लेकिन आप परियोजना के सभी हिस्सों का उपयोग नहीं कर सकते हैं, उदाहरण के लिए पेड़ के झटकों के साथ। अन्य दृष्टिकोण तब आपको सटीक आकार नहीं दिखा सकते हैं।



4

यदि आप Visual Studio कोड का उपयोग करते हैं, तो आप आयात लागत नामक एक्सटेंशन का उपयोग कर सकते हैं ।

यह एक्सटेंशन संपादक में इनलाइन को आयातित पैकेज के आकार को प्रदर्शित करेगा। यह एक्सटेंशन आयातित आकार का पता लगाने के लिए बेबिली-वेबपैक-प्लगइन के साथ वेबपैक का उपयोग करता है।


WebStorm के लिए भी उपलब्ध है।
जोटीडे

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

2

आप npm-मॉड्यूल-आँकड़े देख सकते हैं । यह एक एनपीएम मॉड्यूल है जो एनपीएम मॉड्यूल के आकार और इसकी निर्भरता को मॉड्यूल को स्थापित या डाउनलोड किए बिना प्राप्त करता है।

उपयोग:

var stats = require("npm-module-stats");

stats.getStats("glob").then((stack) => {

  let dependencies = Object.keys(stack);
  let totalSize = dependencies.reduce((result, key, index) => {
    return result + stack[key].size;
  }, 0);

  console.log('Total Size in Bytes ', totalSize);
  console.log('Total Dependencies ', dependencies.length-1);

}).catch((err) => {
  console.error(err);
});

यह थोड़ा वर्बोज़ लग सकता है लेकिन यह आपके द्वारा बताई गई समस्या को हल करता है।


1
2nd लेवल डिपो के बारे में क्या?
शारिकोव व्लादिस्लाव

2

एक "त्वरित और गंदे" तरीके से कर्ल और wzrd.in का उपयोग किया जाता है ताकि वे जल्द से जल्द मिनिफाइज्ड पैकेज को डाउनलोड कर सकें और फाइल को वापस कर सकें

curl -i https://wzrd.in/standalone/axios@latest | grep Content-Length

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


2
खैर, unpkg.com जैसी दूसरी सेवा का उपयोग करें । उदाहरण:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
थोरैगियो

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