Apakah ada cara untuk menentukan apakah Anda memiliki paket di file package.json Anda yang tidak lagi diperlukan?
Misalnya, ketika mencoba suatu paket dan kemudian mengomentari atau menghapus kode, tetapi lupa untuk menghapusnya, saya berakhir dengan beberapa paket yang dapat dihapus.
Apa cara yang efisien untuk menentukan apakah suatu paket dapat dihapus dengan aman?
node.js
dependencies
npm
Josh C
sumber
sumber
depcheck
daftar setiap paketunused
yang salahnpx depcheck
Ada juga paket yang disebut
npm-check
:Ini cukup kuat dan dikembangkan secara aktif. Salah satu fitur itu memeriksa dependensi yang tidak digunakan - untuk bagian ini menggunakan
depcheck
modul yang disebutkan dalam jawaban lain.sumber
npm outdated
memeriksa dan mendaftar versi paket saat ini, yang diinginkan, dan terbaru. Tidak ada daftar paket yang tidak digunakan.Jika Anda menggunakan Unix like OS (Linux, OSX, dll) maka Anda dapat menggunakan kombinasi
find
danegrep
untuk mencari pernyataan yang membutuhkan yang berisi nama paket Anda:Jika Anda mencari seluruh
require('name-of-package')
pernyataan, ingatlah untuk menggunakan jenis tanda kutip yang benar:atau
Kelemahannya adalah itu tidak sepenuhnya otomatis, artinya tidak mengekstrak nama paket dari
package.json
dan memeriksanya. Anda perlu melakukan ini untuk setiap paket sendiri. Karenapackage.json
hanya JSON, ini dapat diatasi dengan menulis skrip kecil yang digunakanchild_process.exec
untuk menjalankan perintah ini untuk setiap ketergantungan. Dan buatlah modul. Dan menambahkannya ke repo NPM ...sumber
.jsx
file dan.ts
file dll: Dfiskeben menulis:
Mari kita buat jawaban Fiskeben terotomatisasi jika karena alasan apa pun
depcheck
tidak berfungsi dengan benar! (Misalnya saya mencobanya dengan Typefteks dan memberikan kesalahan parsing yang tidak perlu)Untuk parsing
package.json
kita dapat menggunakan perangkat lunakjq
. Skrip shell di bawah ini membutuhkan nama direktori tempat untuk memulai.Pertama itu menciptakan dua file sementara di mana kita bisa men-cache nama paket dan file.
Dimulai dengan
find
perintah. Baris pertama dan kedua membuatnya mengabaikannode_modules
danbuild
folder (atau apa pun yang Anda inginkan). Baris ketiga berisi ekstensi yang diizinkan, Anda dapat menambahkan lebih banyak di sini misalnya file JSX atau JSON.Suatu fungsi akan membaca tipe dependendy.
Pertama
cat
spackage.json
. Kemudian,jq
dapatkan grup ketergantungan yang diperlukan. (Apakah{} +
ada sehingga tidak akan melempar kesalahan jika misalnya tidak ada dependensi rekan dalam file.)Setelah itu,
sed
ekstrak bagian-bagian di antara tanda kutip, nama paket.-n
dan.../p
memberitahu itu untuk mencetak bagian yang cocok dan tidak ada yang lain darijq
output JSON. Kemudian kita membaca daftar nama paket ini menjadi satuwhile
lingkaran.RES
adalah jumlah kemunculan nama paket dalam tanda kutip. Saat iniimport
/require
...'package'
/"package"
. Itu melakukan pekerjaan untuk sebagian besar kasus.Kemudian kita cukup menghitung jumlah baris hasil kemudian mencetak hasilnya.
Peringatan:
tsconfig.json
File (lib
opsi)grep
secara manual hanya^USED
danUNUSED
file.sumber
Kita dapat menggunakan modul npm di bawah ini untuk tujuan ini:
https://www.npmjs.com/package/npm-check-unused
sumber
banyak jawaban di sini adalah bagaimana menemukan barang yang tidak digunakan.
Saya ingin menghapusnya secara otomatis .
Instal proyek simpul ini.
$ npm install -g typescript tslint tslint-etc
Di direktori root, tambahkan file baru tslint-import.json
{ "extends": [ "tslint-etc" ], "rules": { "no-unused-declaration": true } }
Jalankan ini dengan risiko Anda sendiri, buat cadangan :)
$ tslint --config tslint-imports.json --fix --project .
sumber
npx depcheck --json | jq '.dependencies[]' | xargs -L1 npm rm