typescript - Hur man skapar en vanlig återanvändbar Angular-komponent för flera projekt
Förutsatt följande projektstruktur:
repo
Projekt A
package.json
- @angular/core
- package.json
- @angular/core
Projekt B
package.json
- @angular/core
Vanlig mapp
package.json
- @angular/core
Varje katalog är sitt eget lilla projekt, som inkluderar sitt eget beroende.
Jag försöker för närvarande importera knappkomponenten i Projekt A och Projekt B, med hjälp av vanlig modulimport. Det sagt, min import går tillbaka några steg ../../../common/button.component
För att deklarera en knapp i den gemensamma mappen behöver jag ha en node_modules-mapp där som innehåller @angular/core, annars kan jag inte använda import {Component} from '@angular/core'
Nu ser all den inställningen bra och fungerande ut, men när jag startar en av mina applikationer med ng serve får jag följande problem:
FEL i ../common/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): fel TS2451: Kan inte omdeklarera block-skopad variabel 'ngDevMode'. node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): fel TS2451: Kan inte omdeklarera block-skopad variabel 'ngDevMode'.
Om jag tar bort @angular/core från det gemensamma modulen och försöker köra igen får jag:
FEL i ../common/components/angular/common.modules.ts(1,30): fel TS2307: Kan inte hitta modul '@angular/common'.
Vilket faktiskt är logiskt, eftersom node_modules inte längre är en del av det gemensamma projektet.
Jag skulle vilja veta hur man kringgår det problemet. Jag skulle troligen kunna importera @angular/core från ProjectA eller ProjectB, men då skulle det bryta mot regeln att inte ha något beroende av ProjectA och B för den gemensamma mappen (men det är okej att ha beroende av det gemensamma projektet).