typescript - API TS tiplerini mikroservisler aracılığıyla (npm üzerinden) paylaşmanın doğru yolu nedir?
Mikroservis ağımı uygularırken bir sorun yaşıyorum. Durum şöyle: İlk mikroservisi (adını micro-A olarak bırakalım) yeni tamamladım ve şimdi başka bir mikroservis üzerinde (micro-B) çalışmaya başlıyorum. micro-B'de kullanmak için micro-A'dan DTO ve bazı arayüzleri paylaşmam gerektiğini fark ettim. Çünkü aralarında tür güvenli iletişim olmaları gerekiyor. İnternetin yarısını araştırdım ve bu duruma dair bir yanıt bulamadım. İnsanların bunu yaptığı iki yol var - monorepo kullanmak ve npm paketleri kullanmak. Ben npm paketlerini kullanmak istiyorum. Bu noktada, mikroservisimde ayrı bir klasör (adı api-interfaces olsun) oluşturup, index.ts dosyası içinde şu kodu oluşturmayı kararlaştırdım:
export * from './src/users/dto/profile.res.dto';
export * from './src/users/dto/user.res.dto';
Ve sonra bir webpack yapılandırması oluşturun, bu yapılandırma api-interfaces/index.ts için tüm bağımlılıkları api-interfaces/lib/* içine kopyalayacak ve ardından bunu npm'e yayınlayacak. Görünüşte tamam, ama sonra şu hataları aldım:
Module not found: Error: Can't resolve '@nestjs/swagger' in '/micro-user/src/profiles/dto'
@ ../profiles/dto/profile.res.dto.ts 14:18-44
@ ../users/dto/user.res.dto.ts
@ ./index.ts
ERROR in ../profiles/dto/profile.res.dto.ts
Module not found: Error: Can't resolve 'class-transformer' in '/micro-user/src/profiles/dto'
@ ../profiles/dto/profile.res.dto.ts 13:28-56
@ ../users/dto/user.res.dto.ts
@ ./index.ts
Ayrıca, class-transformer üzerinden serileştirme kullanıyorum. Yani şu an tıkandım... İki sorum var: - Mikroservisler arasında API DTO'larını ve Arayüzleri nasıl paylaşabileceğimiz hakkında bir fikriniz var mı? - Webpack derlememde bana yardımcı olabilir misiniz?