ฉันจะดูขนาดของแพ็คเกจ npm ได้อย่างไร


129

เมื่อฉันค้นหาแพ็คเกจบน NPM ฉันต้องการดูขนาดแพ็คเกจ (เป็น KB หรือ MB เป็นต้น) ดูเหมือนว่า NPM จะไม่แสดงข้อมูลนี้

ฉันจะทราบได้อย่างไรว่าแพ็กเกจ NPM จะเพิ่มลงในโปรเจ็กต์ของฉันมากแค่ไหน


การหักหลังการสนทนานี้เพราะฉันต้องการชี้ให้เห็นถึงเครื่องมือที่ช่วยอ้างสิทธิ์ในพื้นที่ว่างจากเครื่องของคุณ เห็นได้ชัดว่าnode_modulesครอบครอง atm 21bg บนเครื่องของฉัน npkillช่วยคุณได้! [ใส่คำอธิบายภาพที่นี่ ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy

คำตอบ:


182

สิ่งที่คุณอาจต้องการวัดคือผลกระทบของแพ็กเกจหากคุณเพิ่มลงใน App Bundle คำตอบอื่น ๆ ส่วนใหญ่จะประมาณขนาดของไฟล์ต้นฉบับเท่านั้นซึ่งอาจไม่ถูกต้องเนื่องจากความคิดเห็นแบบอินไลน์ชื่อตัวแปรแบบยาวเป็นต้น

มียูทิลิตี้ขนาดเล็กที่ฉันสร้างขึ้นซึ่งจะบอกขนาดขั้นต่ำ + gzipped ของแพ็คเกจหลังจากที่มันเข้าไปในกลุ่มของคุณ -

https://bundlephobia.com


5
ขอบคุณ! นั่นเป็นเครื่องมือที่ดีจริงๆ!
BaronVonKaneHoffen

3
UI ที่สวยงาม! ขอบคุณนี่คือสิ่งที่ฉันกำลังมองหา ใช้เวลาตลอดไปกับแพ็คเกจขนาดใหญ่สุด ๆ
protoEvangelion

3
@Black ควรจะสำรอง
Shubham Kanodia

6
ลิงค์นี้: https://cost-of-modules.herokuapp.comนำไปสู่https://bundlephobia.com เครื่องมือที่มีประโยชน์มาก btw
Adam Weber

4
มันเจ๋งพอที่ควรจะเพิ่มในหน้า npm สำหรับแต่ละแพ็คเกจ
eddiemoya

69

ดูโครงการต้นทุนของโมดูลนี้ เป็นแพ็คเกจ npm ที่จะแสดงขนาดของแพ็กเกจและจำนวนลูก

การติดตั้ง: npm install -g cost-of-modules

การใช้งาน: เรียกใช้cost-of-modulesในไดเร็กทอรีที่คุณกำลังทำงานอยู่

ใส่คำอธิบายภาพที่นี่


2
ใช้งานมากเกินไปเล็กน้อยจำเป็นต้องติดตั้งโมดูลทั้งหมดของคุณใหม่ก่อนการคำนวณ แต่ไม่ได้ผล
pdem

7
อย่าใช้แพ็คเกจนี้ - มันสร้างโฟลเดอร์สิ่งประดิษฐ์ที่เรียกว่า nodemodules.bak ซึ่งสร้างผลข้างเคียงที่น่าเกลียด
Nth.gol

22

ฉันได้สร้างเครื่องมือขนาดการดาวน์โหลด npmซึ่งตรวจสอบขนาด tarball สำหรับแพ็คเกจ npm ที่กำหนดรวมถึง tarball ทั้งหมดในแผนผังการพึ่งพา สิ่งนี้ช่วยให้คุณทราบถึงต้นทุน (เวลาในการติดตั้งพื้นที่ดิสก์ทรัพยากรรันไทม์การตรวจสอบความปลอดภัย ... ) ของการเพิ่มการอ้างอิงล่วงหน้า

ขนาดดาวน์โหลดของ webpack

ในภาพด้านบนขนาด Tarballคือ tar.gz ของแพ็คเกจและขนาดรวมคือขนาดของ tarball ทั้งหมด เครื่องมือนี้ค่อนข้างธรรมดา แต่ก็ทำตามที่พูด

เครื่องมือ CLIนอกจากนี้ยังมี คุณสามารถติดตั้งได้ดังนี้:

npm i -g download-size

และใช้มันดังนี้:

$ download-size request
request@2.83.0: 1.08 MiB

รหัสที่มาที่มีอยู่ใน Github: API , เครื่องมือ CLIและลูกค้าเว็บ


20

ฉันสร้าง Package Phobia เมื่อต้นปีนี้ด้วยความหวังว่าจะได้รับข้อมูลขนาดแพ็คเกจใน npmjs.com และยังติดตามการขยายตัวของแพ็คเกจเมื่อเวลาผ่านไป

https://packagephobia.com

img

นี้ถูกออกแบบมาเพื่อวัดพื้นที่ดิสก์หลังจากที่คุณเรียกnpm installสำหรับการอ้างอิงด้านเซิร์ฟเวอร์เหมือนexpressหรืออ้างอิง dev jestเช่น

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเครื่องมือนี้และเครื่องมืออื่น ๆ ที่คล้ายคลึงกันได้ใน readme ที่นี่: https://github.com/styfle/packagephobia


อัปเดตปี 2020

"Unpacked Size" (โดยทั่วไปคือขนาดเผยแพร่) มีอยู่บนเว็บไซต์ npmjs.com พร้อมกับ "Total Files" อย่างไรก็ตามนี่ไม่ใช่ความหมายซ้ำซากที่npm installน่าจะใหญ่กว่ามากเนื่องจากแพ็คเกจเดียวน่าจะขึ้นอยู่กับหลายแพ็คเกจ (ดังนั้น Package Phobia ยังคงเกี่ยวข้อง)

นอกจากนี้ยังมีRFC ที่รอดำเนินการสำหรับคุณลักษณะที่พิมพ์ข้อมูลนี้จาก CLI


นี่เป็นสิ่งที่ดี แต่ทำไมผลลัพธ์ของมันจึงแตกต่างจาก Bundlephobia เช่นเปรียบเทียบผลลัพธ์สำหรับ lodash.lowerfirst
Danyal Aytekin

2
@DanyalAytekin เพราะพวกเขากำลังวัดสิ่งต่างๆ คำตอบสั้น ๆ : หากคุณกำลังดูแพ็คเกจส่วนหน้าให้ใช้ BundlePhobia หากคุณกำลังดูแพ็คเกจแบ็คเอนด์ให้ใช้ PackagePhobia มีรายละเอียดเพิ่มเติมในreadmeหากคุณสนใจ
styfle

16

ในกรณีที่คุณใช้ webpack เนื่องจากโมดูลบันเดิลของคุณให้ดูที่:

ฉันขอแนะนำตัวเลือกแรกอย่างแน่นอน แสดงขนาดในทรีแมปแบบโต้ตอบ ซึ่งจะช่วยให้คุณค้นหาขนาดของแพ็คเกจในไฟล์ที่รวม

Webpack Bundle Analyzer

คำตอบอื่น ๆ ในโพสต์นี้แสดงขนาดของโปรเจ็กต์ แต่คุณอาจไม่ได้ใช้ทุกส่วนของโปรเจ็กต์ตัวอย่างเช่นการเขย่าต้นไม้ วิธีอื่นอาจไม่แสดงขนาดที่ถูกต้อง



4

หากคุณใช้ Visual Studio รหัสคุณสามารถใช้ส่วนขยายที่เรียกว่านำเข้าต้นทุน

ส่วนขยายนี้จะแสดงขนาดของแพ็กเกจที่นำเข้าในตัวแก้ไข ส่วนขยายใช้ webpack กับ babili-webpack-plugin เพื่อตรวจจับขนาดที่นำเข้า


พร้อมใช้งานสำหรับ WebStorm
JoeTidee

ส่วนขยายนี้ใช้ไม่ได้กับทุกแพ็คเกจ มันแสดงการคำนวณ ... และจากนั้นก็หายไปแม้ว่าจะเปลี่ยนค่าหมดเวลาเป็นตัวเลขมาก
ก็ตาม

2

คุณสามารถตรวจสอบNPM โมดูลสถิติ เป็นโมดูล npm ที่ได้รับขนาดของโมดูล 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
แล้วเดประดับ 2 ล่ะ?
Sharikov Vladislav

2

วิธีที่ "รวดเร็วและสกปรก" คือใช้ curl และwzrd.inเพื่อดาวน์โหลดแพ็กเกจที่ย่อขนาดอย่างรวดเร็วจากนั้น grep ขนาดไฟล์:

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

การดาวน์โหลดจะถูกลดขนาดลง แต่ไม่ได้รับการบีบอัด แต่คุณจะได้รับความคิดที่ดีเกี่ยวกับขนาดของแพ็กเกจที่สัมพันธ์กันเมื่อคุณเปรียบเทียบสองแพ็กเกจหรือมากกว่านั้น


2
งั้นไปใช้บริการอื่นเช่นunkg.comแล้ว ตัวอย่าง:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
thoragio

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.