typescript - Hvordan inkludere et lokalt bibliotek i Angular?


Mens jeg laget en Angular-applikasjon ønsket jeg å lage et bibliotek hvor jeg kan legge komponenter som også kan være nyttige i andre prosjekter. For å lage biblioteket har jeg laget et annet Angular-arbeidsområde hvor jeg har generert bibliotekprosjektet og brukt applikasjonsprosjektet som ble generert automatisk innenfor arbeidsområdet for å vise individuelle komponenter.

ng new my-components-library
cd my-components-library
ng generate library components-library

Nå har jeg et bibliotek med fungerende komponenter som består enhetstestene og fungerer riktig i det vedlagte applikasjonsprosjektet, men jeg trenger dem i prosjektets arbeidsområde. Jeg prøvde å inkludere biblioteket på denne måten.

Inne i prosjektarbeidsområdet mitt

npm install ../my-components-library/projects/components-library

kommandoen kjører riktig og jeg får en referanse til biblioteket i vertprosjektets package.json, men når jeg må inkludere moduler fra det eksterne biblioteket i et prosjekts modul ved å bruke import {myModule} from 'components-library', får jeg en feil fordi Angular ikke kan finne modulen.

Svar #1

Du kan enten bruke npm link, som oppretter en symbolsk lenke i node_modules-katalogen til vertsapplikasjonene dine.

  • Kjør npm link i det lokale biblioteket
  • Kjør npm link @local-library-name i vertsapplikasjonen
  • Men sørg for at du gjør følgende endringer i vertsappene dine sin angular.json-fil. Hvis du bruker Angular 11 eller lavere, legg da til "preserveSymlinks": true, ellers 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 pakke biblioteket i en tar ved å bruke npm pack.

  • Kjør npm pack i biblioteket ditt
  • Kjør npm i your-library-path.tgz i vertsapplikasjonen din
  • Eller du kan oppdatere package.json med en ny avhengighet for vertsapplikasjonen og kjøre npm i
"your-library-name": "file:your-library-path.tgz",

Relaterte artikler