خطأ في لغة Javascript/TypeScript على مستوى المشروع من امتداد اللغة المدمج


أتلقى الخطأ التالي في VSCode كلما فتحت مساحة العمل الخاصة بي.

To enable project-wide JavaScript/TypeScript language features, exclude large folders with source files that you do not work on. 
Source: TypeScript and Javascript Language Feat... [BUTTON: CONFIGURE EXCLUDES]

أضغط على زر Configure Excludes على الرسالة ويفتح الملف التالي FRONTENDAPP/jsconfig.json

{"compilerOptions":{"target":"es6","experimentalDecorators":true},"exclude":["node_modules","bower_components","tmp","vendor",".git","dist"]}

يبدو لي أنه تم تكوينه بشكل صحيح وفقًا للوثائق أدناه: https://code.visualstudio.com/docs/languages/javascript

فلماذا الخطأ طوال الوقت؟

تم إعداد مساحة عملي على النحو التالي:

FOLDER: NOTES
FOLDER: FRONTENDAPP
FOLDER: BACKENDAPP

كل مجلد به ملف jsconfig.json.

الملف المقابل في الـ NOTES و BACKENDAPP هو نفسه ويبدو كما يلي:

{"compilerOptions":{"target":"es6","experimentalDecorators":true},"exclude":["node_modules","bower_components","tmp","vendor",".git","dist"]}

الإجابة رقم 1

تحديد المجلدات التي تحتوي على العديد من الملفات: du -a | cut -d/ -f2 | sort | uniq -c | sort -nr

162114 node_modules
5837 .git
4967 concat-stats-for
 443 app
  77 tests
  72 dist
   8 config
   7 public

تحقق من المجلدات التي لم يتم استبعادها في jsconfig.json لملفات JS و TS

find concat-stats-for -type f | sed -e 's/.*\.//' | sort | uniq -c | sort -n | grep -Ei '(js|ts)$'

  42 ts
3003 js

إذا لم يكن المجلد هو رمز التطبيق، أضف هذا المجلد إلى الاستثناءات في jsconfig.json.

الإجابة رقم 2

واجهت نفس المشاكل وأدركت:

  1. كان لدي node_modules في المجلدات الفرعية
  2. كان لدي نسخ من dist (مثل dist1، dist2) لأغراض التصحيح، والتي تم تجاهلها في git لكنها لم تُتجاهل في vscode.
  3. كان لدي مجلدات .npm و .npm-tmp تحتوي على الكثير من الأشياء بالداخل.
  4. بصرف النظر عن dist كان لدي أيضًا مجلد مؤقت آخر .app-cache.

انتهى بي المطاف إلى الإدخال التالي في /jsconfig.json (مكررة قليلاً لتحسين القراءة) لجعل التحذير يختفي:

  "exclude": [
    ".git",
    ".app-cache",
    ".npm",
    ".npm-tmp",
    "dist",
    "dist*",
    "node_modules",
    "subfolder/dist",
    "subfolder/node_modules",
    "**/dist/*",
    "**/node_modules/*",
  ]
}