typescript - Ortak, projeler arası yeniden kullanılabilir bir Angular bileşeni nasıl oluşturulur


Aşağıdaki proje yapısı varsayıldığında:

depo

  • Proje A

    • package.json

      • @angular/core
      • package.json
      • @angular/core

    • dashboard.component.ts
  • Proje B

    • package.json

      • @angular/core
      • package.json
      • @angular/core

    • panel.bileşen.ts
  • Ortak klasör

    • package.json

      • @angular/core
      • package.json
      • @angular/core

    • button.component.ts

Her dizin kendi küçük projesidir ve kendi bağımlılıklarını içerir.

Şu anda, normal modül importunu kullanarak Proje A ve Proje B'de buton bileşenini ithal etmeye çalışıyorum. Bununla birlikte, benim importum birkaç adım geri gidiyor ../../../common/button.component

Ortak klasörde bir buton tanımlayabilmek için, orada @angular/core içeren bir node_modules klasörümün olması gerekiyor, aksi takdirde import {Component} from '@angular/core' kullanamam

Şimdi tüm bu kurulum iyi ve işlevsel görünüyor, ancak uygulamalarımdan birini ng serve kullanarak başlattığımda, aşağıdaki sorunla karşılaşıyorum:

HATA ../common/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Blok kapsamlı değişken 'ngDevMode' yeniden bildirilemez. node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Blok kapsamlı değişken 'ngDevMode' yeniden bildirilemez.

Eğer ortak modülden @angular/core öğesini çıkarırsam ve tekrar çalıştırmayı denersem, şunu alıyorum :

HATA ../common/components/angular/common.modules.ts(1,30): hata TS2307: '@angular/common' modülü bulunamıyor.

Bu mantıklı oluyor, çünkü node_modules artık ortak projenin bir parçası değil.

Bu sorunun üstesinden nasıl gelineceğini bilmek istiyorum. Muhtemelen @angular/core'u ProjectA veya ProjectB'den ithal edebilirim, ama bu durumda ortak klasör için ProjectA ve B'ye herhangi bir bağımlılık olmaması kuralını ihlal etmiş olurum (Ama ortak projeye bağımlı olmak sorun değil).