unit testing - tsconfig.json dosyamda birden fazla kaynak klasörü nasıl belirtebilirim?


Şu anda aşağıdaki proje yapısına sahibim:

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

Benim tsonfig.json dosyam şöyle görünüyor:

{
"compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "noImplicitAny": false,
    "outDir": "./js",
    "rootDir": "./src",
    "sourceMap": true,
    "jsx": "react"
},
"exclude": [
    "typings/main.d.ts",
    "typings/main",
    "node_modules"
    ]
}

Bu tamamen çok iyi çalışıyor ve uygulamamı mutlu bir şekilde geliştirebilir ve bir tarayıcıda çalıştırabilirim.

Şimdi projeme bazı birim testleri eklemek istiyorum ve Java geçmişimden dolayı ilk içgüdüm testleri ayrı bir klasöre koymak:

project/
  test/
    ...all of my test cases

Tabii ki, test/ klasöründeki dosyaların, src/ klasörümdeki koda referans vermesi gerekiyor. Bunu nasıl ayarlarım?

Yoksa testleri src/ klasörünün içine yerleştirmek ve onlar için ayrı bir webpack.config.js dosyasına sahip olmak 'daha mı iyi'?

Büyük TypeScript projelerinde bunun pratikte nasıl çalıştığı konusunda gerçekten kafam karıştı.

Not: Bunu gördüm ama cevabı pek aydınlatıcı bulmadım. Görünüşe göre filesGlob ile ilgili referans verilen özellik tartışması bana yardımcı olur gibi görünüyor, ama merak ediyorum, insanlar bunu bugün nasıl yapıyor?

Cevap #1

Artık rootDir dışında, rootDirs kullanabilirsiniz

"rootDirs": ["./scripts", "./src"],

birden çok klasör için.

İşte API dokümantasyonu: https://www.typescriptlang.org/docs/handbook/module-resolution.html#virtual-directories-with-rootdirs

Cevap #2

Sanırım yol eşleştirmesi arıyorsunuz. paths derleyici seçeneği ile sadece tek bir konuma değil, birden fazla konuma da eşleme yapabilirsiniz. İşte belgeden bir örnek:

"compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "*": [
        "*",
        "generated/*"
      ]
    }
}

Derleyici beklenen konumda bir modül bulamazsa, modül çözümlemesini "generated" alt klasöründe tekrarlar. baseUrl ayarı gereksiz görünüyor ama zorunludur.

İlgili makaleler