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 link i det lokala biblioteket
  • Kör npm link @local-library-name i 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, annars sourceMap med scripts, styles, vendor som 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 pack i ditt bibliotek
  • Kör npm i your-library-path.tgz i 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",

Relaterade artiklar