typescript - Hur inkluderar man ett lokalt bibliotek i Angular?
Medan jag skapade en Angular-applikation ville jag bygga ett bibliotek där jag kan lägga komponenter som kan vara användbara även i andra projekt. För att skapa biblioteket har jag gjort ett annat Angular-arbetsutrymme där jag har genererat bibliotekprojektet och använt applikationsprojektet som genererades automatiskt inom arbetsutrymmet för att visa individuella komponenter.
ng new my-components-library
cd my-components-library
ng generate library components-library
Nu har jag ett bibliotek med fungerande komponenter som klarar enhetstesterna och fungerar korrekt i det bifogade applikationsprojektet, men jag behöver dem i mitt projekts arbetsyta. Jag försökte inkludera biblioteket på det här sättet.
Inuti mitt projektarbetsutrymme
npm install ../my-components-library/projects/components-library
kommandot körs korrekt och jag får en referens till biblioteket i värdprojektets package.json, men när jag måste inkludera moduler från det externa biblioteket i ett projekts modul med import {myModule} from 'components-library' får jag ett fel eftersom Angular inte kan hitta modulen.
Svar #1
Du kan antingen använda npm link, vilket skapar en symbolisk länk i ditt värdapps node_modules-katalog.
- Kör
npm linki det lokala biblioteket - Kör
npm link @local-library-namei värdprogrammet - Men se till att göra följande ändringar i dina värdprograms
angular.json-fil. Om du använder en version av Angular som är 11 eller lägre, lägg till"preserveSymlinks": true, annarssourceMapmedscripts,styles,vendorsom true
"build": {
"options": {
"preserveSymlinks": true, // angular 11 or less
}
},
{
"projects": {
"your-app": {
"architect": {
"build": {
"options": {
"sourceMap": { // angular 12 or more
"scripts": true,
"styles": true,
"vendor": true
},
Du kan paketera biblioteket till tar med npm pack.
- Kör
npm packi ditt bibliotek - Kör
npm i your-library-path.tgzi din värdapplikation - Eller så kan du uppdatera package.json med ett nytt beroende för värdapplikationen och köra
npm i
"your-library-name": "file:your-library-path.tgz",
