مقدمة: لماذا لا يرى TypeScript ملفاتي؟
\n\nتفتح مشروعًا على TypeScript، وتشغل عملية البناء، وفجأة — بام! — دش بارد على شكل رسالة: tsconfig.json: Build:No inputs were found in config file. هل هذا مألوف؟ إذا سبق لك أن واجهت إعداد TypeScript، فمن المحتمل أنك رأيت هذا الخطأ. إنه يخيف المبتدئين ويزعج المحترفين. لكن لا تتعجل في نتف شعرك أو لعن Microsoft.
في هذه المقالة، لن نكتفي بإظهار كيفية إسكات الخطأ بسرعة. سنقوم بتحليل تشريحه: لماذا يحدث، وما السيناريوهات التي تؤدي إليه، وكيفية إعداد tsconfig.json بحيث لا ترى هذه الرسالة مرة أخرى. سيكون هذا مفيدًا لكل من يبدأ في تعلم TypeScript ولمن يريد فهم آلية عمل المترجم بشكل أعمق.
ونعم، سنتحدث بالعربية، بشكل حيوي ومع أمثلة. هيا بنا!
\n\nماذا يعني خطأ "Build:No inputs were found in config file"؟
\n\nإذا ترجمنا من لغة المترجم إلى لغة البشر، فإن TypeScript يقول لك: "أنا لا أعرف أي الملفات يجب ترجمتها. لقد طلبت مني بناء المشروع، لكنك لم تحدد أين توجد الملفات المصدرية." يبحث المترجم tsc عن ملفات .ts و .tsx، لكنه لا يجد أيًا منها في الدلائل التي حددتها (أو حددها هو نفسه).
يحدث الخطأ في حالتين نموذجيتين:
\n- \n
- لقد أنشأت للتو
tsconfig.jsonفي مجلد فارغ. \n - لقد قمت بإعداد الحقول
includeأوexcludeأوrootDirبشكل غير صحيح. \n
دعنا نحلل كل سبب بالتفصيل، حتى لا تتمكن فقط من نسخ الحل، بل تفهم لماذا يعمل.
\n\nالسبب رقم 1: لا توجد ملفات TypeScript في المشروع
\n\nالسبب الأكثر تافهًا ولكنه شائع. لقد أنشأت tsconfig.json في مجلد لا يحتوي على أي ملف .ts. يبحث المترجم بأمانة — ولا يجد شيئًا.
مثال على المشكلة:
\nmy-project/\n├── tsconfig.json\n└── (لا شيء آخر)\n\nتشغيل npx tsc — ونحصل على الخطأ. الحل واضح: قم بإنشاء ملف index.ts واحد على الأقل.
كيفية الإصلاح:
\nmy-project/\n├── tsconfig.json\n├── src/\n│ └── index.ts # <-- ها هو، المنقذ!\n\nولكن ماذا لو كانت الملفات موجودة وما زال الخطأ يظهر؟ إذن نتعمق أكثر.
\n\nالسبب رقم 2: مسار غير صحيح في حقل include
\n\nحقل include في tsconfig.json يخبر المترجم: "ابحث عن الملفات هنا". إذا حددت مجلدًا غير موجود أو أخطأت في المسار، فلن يجد المترجم شيئًا.
إعداد غير صحيح:
\n{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "outDir": "./dist"\n },\n "include": ["src/**/*"] // والمجلد src غير موجود!\n}\n\nفي هذا المثال، المجلد src غير موجود. يحاول المترجم بأمانة العثور على الملفات وفقًا للنمط src/**/*، ولا يجد — ويصدر الخطأ.
كيفية الإصلاح:
\n- \n
- تحقق من وجود المجلد الذي حددته في
include. \n - تأكد من وجود ملفات
.tsأو.tsxفي هذا المجلد. \n - استخدم المسارات النسبية. إذا كان
tsconfig.jsonفي الجذر والملفات المصدرية فيsrc/، اكتب"src/**/*". \n
الإعداد الصحيح:
\n{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "outDir": "./dist"\n },\n "include": ["src/**/*"]\n}\n// تأكد من وجود المجلد src وأنه يحتوي على ملفات .ts\n\nالسبب رقم 3: تعارض بين include و exclude
\n\nأحيانًا تحدد مجلدًا في include، ولكن بعد ذلك في exclude تس