การทดสอบหน่วย - ฉันจะระบุหลายโฟลเดอร์ต้นทางใน tsconfig.json ของฉันได้อย่างไร?
ฉันมีโครงสร้างโครงการดังต่อไปนี้ในปัจจุบัน:
project/
tsconfig.json
webpack.config.js
package.json
node_modules/
...lots of dependencies
typings/
...lots of .d.ts files for the dependencies
src/
...folders for files for my projects
ไฟล์ tsonfig.json ของฉันมีลักษณะดังนี้:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"outDir": "./js",
"rootDir": "./src",
"sourceMap": true,
"jsx": "react"
},
"exclude": [
"typings/main.d.ts",
"typings/main",
"node_modules"
]
}
ทั้งหมดนี้ทำงานได้ดีมากและฉันสามารถพัฒนาการใช้งานของฉันและรันมันในเบราว์เซอร์ได้อย่างมีความสุข
ตอนนี้ฉันอยากจะเพิ่มการทดสอบหน่วยบางอย่างให้กับโปรเจคของฉัน และเนื่องจากฉันมาจากพื้นหลังของ Java สัญชาตญาณเริ่มต้นของฉันคือการวางการทดสอบในโฟลเดอร์แยกต่างหาก:
project/
test/
...all of my test cases
แน่นอนว่า ไฟล์ในโฟลเดอร์ test/ จำเป็นต้องอ้างอิงโค้ดในโฟลเดอร์ src/ ของผม ผมจะตั้งค่านั้นอย่างไร?
หรือว่ามันจะ "ดีกว่า" หากวางการทดสอบไว้ในไฟล์ src/ โดยตรงและมีไฟล์ webpack.config.js แยกต่างหากสำหรับพวกมัน?
สับสนจริงๆ ว่าสิ่งนี้ทำงานอย่างไรในทางปฏิบัติในโครงการ TypeScript ขนาดใหญ่
หมายเหตุ: ฉันเคยเห็นสิ่งนี้มาก่อนแต่พบว่าคำตอบนั้นไม่ค่อยให้ความกระจ่าง มันดูเหมือนว่าการสนทนาเกี่ยวกับฟีเจอร์ที่อ้างถึง filesGlob จะช่วยฉันได้ แต่ฉันก็แค่สงสัยว่าผู้คนกำลังทำสิ่งนี้กันอย่างไรในวันนี้?
คำตอบ #1
ตอนนี้นอกจาก rootDir แล้ว คุณสามารถใช้ rootDirs ได้
"rootDirs": ["./scripts", "./src"],
สำหรับหลายโฟลเดอร์
นี่คือเอกสาร API: https://www.typescriptlang.org/docs/handbook/module-resolution.html#virtual-directories-with-rootdirs
คำตอบ #2
ฉันคิดว่าคุณกำลังมองหาการแมปเส้นทาง ด้วยตัวเลือกคอมไพเลอร์ paths คุณสามารถระบุไม่เพียงแค่การแมปไปยังที่ตั้งเดียว แต่ไปหลายที่ได้ นี่คือตัวอย่างจากเอกสาร:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*",
"generated/*"
]
}
}
ถ้าคอมไพเลอร์ไม่พบโมดูลในตำแหน่งที่คาดไว้ มันจะทำการแก้ไขโมดูลซ้ำในโฟลเดอร์ย่อย "generated" การตั้งค่า baseUrl ดูเหมือนจะซ้ำซ้อน แต่เป็นสิ่งจำเป็น
