تايب سكريبت - كيفية تجاهل ملفات الاختبار في webpack باستخدام ts-loader
لدي مشروع يقوم بتشغيل ملفات الاختبار المسماة "*.test.ts" باستخدام jest و ts-jest. هذا جيد، لكن عندما أشغل webpack، أحصل على أخطاء لملفات الاختبار:
ERROR in /some/path/note.test.ts
(27,3): error TS2304: Cannot find name '
كيف يمكنني إصلاح تكوين webpack لتجاهل ملفات الاختبار تمامًا؟
إليك إعدادات تكوين webpack:
const path = require ( 'path' )
module.exports =
{ entry: './src/boot.tsx'
, node:
{ __dirname: false
}
, output:
{ path: path.resolve ( __dirname, 'app', 'build' )
, filename: 'app.js'
, publicPath: '/live-reload/'
}
, devtool: 'source-map'
, resolve:
{ extensions: ['', '.js', '.ts', '.tsx']
}
, module:
{ loaders:
[ { test: /\.tsx?$/
, exclude: /node_modules/
, loader: 'ts-loader'
}
]
}
}
[تحرير]
لقد استخدمت دالة الاختبار لتسجيل الملفات التي تم رؤيتها، وملفات الاختبار لا تظهر هناك، لذا فالمشكلة ليست في Webpack الذي يدرج الملفات الخاطئة، بل في سلوك TypeScript السيء (لأن الاختبارات تعمل بشكل جيد مع Jest).
الإجابة رقم 1
انتهى بي المطاف إلى حل هذا أيضًا، ولكن بطريقة مختلفة، وهي إضافة الإعدادات التالية إلى ملف .tsconfig الخاص بي:
"include": [
"./lib/**/*"
],
"exclude": [
"./lib/__tests__"
]
لست متأكدًا لماذا لم يظهر هذا للمستخدم الأصلي والشركة. ربما كانوا قد أعدوا بالفعل تلك الإعدادات في ملف .tslint الخاص بهم (على سبيل المثال، لأن مشروعهم قد تم إنشاؤه أو نسخه من مشروع آخر).
ولكن يبدو أن TypeScript (على الأقل، اعتبارًا من الإصدار 2.3.2) يولي اهتمامًا لهذه الإعدادات ويتجاهل الإعدادات المكافئة في webconfig.config.js.
الإجابة رقم 2
يمكنك تحديد دالة بدلاً من التعبير النمطي لخاصية test في اللودر؛ هذا يمكن أن يعطيك تحكمًا أكبر.
test: function (modulePath) {
return modulePath.endsWith('.ts') && !modulePath.endsWith('test.ts');
}
