Bagaimana cara saya melihat ukuran paket npm?


129

Ketika saya mencari paket di NPM, saya ingin melihat ukuran paket (dalam KB atau MB, dll). NPM sepertinya tidak menunjukkan informasi ini.

Bagaimana saya bisa menentukan berapa banyak mengasapi paket NPM yang akan ditambahkan ke proyek saya?


Membajak percakapan ini karena saya ingin menunjukkan alat yang membantu mengklaim ruang kosong dari mesin Anda. Rupanya node_modulesmenempati atm 21bg di mesin saya; npkilldapat membantu Anda melakukannya ! [masukkan deskripsi gambar di sini ] ( i.stack.imgur.com/BKbyU.png )
Ahmad Alfy

Jawaban:


181

Apa yang mungkin ingin Anda ukur adalah dampak suatu paket jika Anda ingin menambahkannya ke bundel aplikasi Anda. Sebagian besar jawaban lain akan memperkirakan ukuran file sumber saja, yang mungkin tidak akurat karena komentar sebaris, nama var panjang dll.

Ada utilitas kecil yang saya buat yang akan memberi tahu Anda ukuran min + gzipped paket setelah masuk ke bundel Anda -

https://bundlephobia.com


5
Terima kasih! Itu util yang sangat bagus!
BaronVonKaneHoffen

3
UI yang indah! Terima kasih, inilah tepatnya yang saya cari. Memakan selamanya paket super besar.
protoEvangelion

3
@ Black Harus kembali
Shubham Kanodia

6
Tautan ini: https://cost-of-modules.herokuapp.comsekarang mengarah ke https://bundlephobia.com alat yang sangat berguna btw.
Adam Weber

4
Ini cukup keren sehingga harus ditambahkan ke halaman npm untuk setiap paket
eddiemoya

69

Lihatlah proyek modul biaya ini. Ini adalah paket npm yang akan mencantumkan ukuran paket dan jumlah anak.

Instalasi: npm install -g cost-of-modules

Penggunaan: Jalankan cost-of-modulesdi direktori tempat Anda bekerja.

masukkan deskripsi gambar di sini


2
Sedikit berlebihan, perlu menginstal ulang semua modul Anda sebelum perhitungan. Tetapi melakukan pekerjaan.
pdem

7
jangan gunakan paket ini - ini membuat folder artefak bernama nodemodules.bak yang menciptakan efek samping yang jelek
Nth.gol

22

Saya telah membuat alat, ukuran unduhan npm , yang memeriksa ukuran tarball untuk paket npm yang diberikan, termasuk semua tarbal di pohon dependensi. Ini memberi Anda gambaran tentang biaya (waktu instalasi, ruang disk, sumber daya runtime, audit keamanan, ...) untuk menambahkan dependensi di muka.

ukuran unduhan webpack

Pada gambar di atas, ukuran Tarball adalah tar.gz dari paket, dan Ukuran total adalah ukuran semua tarball. Alat ini cukup mendasar, tetapi melakukan apa yang dikatakannya.

Sebuah alat cli juga tersedia. Anda dapat menginstalnya seperti ini:

npm i -g download-size

Dan gunakan seperti ini:

$ download-size request
request@2.83.0: 1.08 MiB

Kode sumber tersedia di Github: api , cli tool dan klien web .


20

Saya membuat Paket Phobia awal tahun ini dengan harapan untuk mendapatkan informasi ukuran paket ke npmjs.com dan juga melacak paket mengasapi dari waktu ke waktu.

https://packagephobia.com

img

Ini dirancang untuk mengukur ruang disk setelah Anda menjalankan npm installuntuk dependensi sisi server seperti expressatau dev dependensi suka jest.

Anda dapat membaca lebih lanjut tentang alat ini dan alat serupa lainnya di readme di sini: https://github.com/styfle/packagephobia


Perbarui 2020

"Ukuran Tidak Dibongkar" (pada dasarnya Ukuran Terbit) tersedia di situs web npmjs.com bersama dengan "Total File". Namun, ini bukan makna rekursif yang npm installkemungkinan akan jauh lebih besar karena satu paket cenderung tergantung pada banyak paket (sehingga Paket Phobia masih relevan).

Ada juga RFC yang tertunda untuk fitur yang mencetak informasi ini dari CLI.


Ini bagus, tetapi mengapa hasilnya sangat berbeda dari bundlephobia? mis. bandingkan hasilnya untuk lodash.lowerfirst
Danyal Aytekin

2
@DanyalAytekin Karena mereka mengukur hal yang berbeda. Jawaban singkat: jika Anda mencari paket front-end gunakan BundlePhobia. Jika Anda mencari paket back-end, gunakan PackagePhobia. Ada lebih banyak detail di readme jika Anda tertarik.
styfle

16

Jika Anda menggunakan webpack sebagai bundler modul Anda lihat:

Saya merekomendasikan opsi pertama. Ini menunjukkan ukuran dalam treemap interaktif. Ini membantu Anda menemukan ukuran paket dalam file yang Anda bundel.

Webpack Bundle Analyzer

Jawaban lain dalam posting ini menunjukkan ukuran proyek Anda, tetapi Anda mungkin tidak menggunakan semua bagian proyek, misalnya dengan pohon goyang. Maka pendekatan lain mungkin tidak menunjukkan ukuran yang akurat.



4

Jika Anda menggunakan Visual Studio Code, Anda bisa menggunakan ekstensi yang disebut Biaya Impor .

Ekstensi ini akan menampilkan inline di editor ukuran paket yang diimpor. Ekstensi ini menggunakan webpack dengan babili-webpack-plugin untuk mendeteksi ukuran yang diimpor.


Juga tersedia untuk WebStorm.
JoeTidee

Ekstensi ini tidak berfungsi untuk semua paket. Ini menunjukkan Menghitung ... dan kemudian tiba-tiba menghilang bahkan setelah mengubah nilai batas waktu ke angka yang sangat besar
shreyansh

2

Anda bisa melihat npm-module-stats . Ini adalah modul npm yang mendapatkan ukuran modul npm dan dependensinya tanpa menginstal atau mengunduh modul.

Pemakaian:

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);
});

Ini mungkin tampak sedikit bertele-tele tetapi itu memecahkan masalah yang Anda uraikan dengan tepat.


1
Bagaimana dengan level 2 deps?
Sharikov Vladislav

2

Cara "cepat & kotor" adalah dengan menggunakan curl dan wzrd.in untuk mengunduh paket yang diperkecil dengan cepat dan kemudian mengambil ukuran file:

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

Unduhan diperkecil tetapi tidak di-gzip, tetapi Anda mendapatkan ide bagus tentang ukuran relatif paket ketika Anda membandingkan dua atau lebih dari itu.


2
Nah, gunakan layanan lain seperti unpkg.com lalu. Contoh:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
thoragio

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.