ফিসকেবেন লিখেছেন:
খারাপ দিকটি এটি সম্পূর্ণ স্বয়ংক্রিয় নয়, অর্থাৎ এটি প্যাকেজ.জসন থেকে প্যাকেজের নামগুলি বের করে না এবং এগুলি পরীক্ষা করে। প্রতিটি প্যাকেজের জন্য আপনাকে এটি করা দরকার।
যেকোনো কারণে depcheck
যদি সঠিকভাবে কাজ না করা হয় তবে আসুন ফিসকেবনের উত্তরটি স্বয়ংক্রিয়ভাবে তৈরি করা যাক ! (যেমন আমি এটি টাইপস্ক্রিপ্ট দিয়ে চেষ্টা করেছি এবং এটি অপ্রয়োজনীয় পার্সিং ত্রুটি দিয়েছে)
পার্সিংয়ের জন্য package.json
আমরা সফটওয়্যারটি ব্যবহার করতে পারি jq
। নীচের শেল স্ক্রিপ্টের একটি ডিরেক্টরি নাম প্রয়োজন যেখানে শুরু করতে হবে।
#!/bin/bash
DIRNAME=${1:-.}
cd $DIRNAME
FILES=$(mktemp)
PACKAGES=$(mktemp)
find . \
-path ./node_modules -prune -or \
-path ./build -prune -or \
\( -name "*.ts" -or -name "*.js" -or -name "*.json" \) -print > $FILES
function check {
cat package.json \
| jq "{} + .$1 | keys" \
| sed -n 's/.*"\(.*\)".*/\1/p' > $PACKAGES
echo "--------------------------"
echo "Checking $1..."
while read PACKAGE
do
RES=$(cat $FILES | xargs -I {} egrep -i "(import|require).*['\"]$PACKAGE[\"']" '{}' | wc -l)
if [ $RES = 0 ]
then
echo -e "UNUSED\t\t $PACKAGE"
else
echo -e "USED ($RES)\t $PACKAGE"
fi
done < $PACKAGES
}
check "dependencies"
check "devDependencies"
check "peerDependencies"
প্রথমে এটি দুটি অস্থায়ী ফাইল তৈরি করে যেখানে আমরা প্যাকেজের নাম এবং ফাইলগুলি ক্যাশে করতে পারি।
এটি find
কমান্ড দিয়ে শুরু হয় । প্রথম ও দ্বিতীয় লাইন করা তা উপেক্ষা node_modules
এবংbuild
ফোল্ডার (অথবা যাহা চান)। তৃতীয় লাইনে অনুমোদিত এক্সটেনশন রয়েছে, আপনি এখানে আরও যুক্ত করতে পারেন যেমন জেএসএক্স বা জেএসএন ফাইল।
একটি ফাংশন নির্ভরশীল প্রকারগুলি পড়বে।
প্রথম এটা cat
গুলি package.json
। তারপরে, jq
প্রয়োজনীয় নির্ভরতা গ্রুপ পায় gets ( {} +
সেখানে কি আছে যাতে এটি কোনও ত্রুটি ছুঁড়ে না দেয়, উদাহরণস্বরূপ যদি ফাইলটিতে পিয়ার নির্ভরতা না থাকে))
এর পরে, sed
প্যাকেজের নাম , উদ্ধৃতিগুলির মধ্যে অংশগুলি বের করে। -n
এবং .../p
এটি মিলে যাওয়া অংশগুলি এবং jq
JSON আউটপুট থেকে অন্য কিছু মুদ্রণ করতে বলে । তারপরে আমরা প্যাকেজের নামের এই তালিকাটি একটি while
লুপে পড়ি ।
RES
উদ্ধৃতিতে প্যাকেজ নামের সংঘটন সংখ্যা। এখনই এটি import
/ require
... 'package'
/ "package"
। এটি বেশিরভাগ ক্ষেত্রে কাজ করে।
তারপরে আমরা কেবল ফলাফলের রেখার সংখ্যা গণনা করি তারপরে ফলাফলটি মুদ্রণ করি।
আদেশ সহকারে:
- বিভিন্ন আমদানিতে ফাইলগুলি খুঁজে পাবেন না যেমন
tsconfig.json
ফাইল (lib
বিকল্প)
- আপনাকে
grep
কেবলমাত্র ফাইল ^USED
এবং UNUSED
ফাইলের জন্য ম্যানুয়ালি করতে হবে।
- এটি বড় প্রকল্পগুলির জন্য ধীর - শেল স্ক্রিপ্টগুলি প্রায়শই ভাল স্কেল করে না। তবে আশা করি আপনি এটি অনেক বার চালাবেন না।