ফিসকেবেন লিখেছেন:
খারাপ দিকটি এটি সম্পূর্ণ স্বয়ংক্রিয় নয়, অর্থাৎ এটি প্যাকেজ.জসন থেকে প্যাকেজের নামগুলি বের করে না এবং এগুলি পরীক্ষা করে। প্রতিটি প্যাকেজের জন্য আপনাকে এটি করা দরকার।
যেকোনো কারণে 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এটি মিলে যাওয়া অংশগুলি এবং jqJSON আউটপুট থেকে অন্য কিছু মুদ্রণ করতে বলে । তারপরে আমরা প্যাকেজের নামের এই তালিকাটি একটি whileলুপে পড়ি ।
RESউদ্ধৃতিতে প্যাকেজ নামের সংঘটন সংখ্যা। এখনই এটি import/ require... 'package'/ "package"। এটি বেশিরভাগ ক্ষেত্রে কাজ করে।
তারপরে আমরা কেবল ফলাফলের রেখার সংখ্যা গণনা করি তারপরে ফলাফলটি মুদ্রণ করি।
আদেশ সহকারে:
- বিভিন্ন আমদানিতে ফাইলগুলি খুঁজে পাবেন না যেমন
tsconfig.jsonফাইল (lib বিকল্প)
- আপনাকে
grepকেবলমাত্র ফাইল ^USEDএবং UNUSEDফাইলের জন্য ম্যানুয়ালি করতে হবে।
- এটি বড় প্রকল্পগুলির জন্য ধীর - শেল স্ক্রিপ্টগুলি প্রায়শই ভাল স্কেল করে না। তবে আশা করি আপনি এটি অনেক বার চালাবেন না।