Hur använder man npm link med en modul som är skriven med TypeScript för utveckling?


Jag bygger ett bibliotek med TypeScript och Webpack.

För att utveckla detta bibliotek har jag skapat ett separat testprojekt (skrivet med JS) och länkat biblioteket med npm link <package-name>.

Problemet är att länken leder till byggefilen och jag måste köra npm run build varje gång jag gör en ändring.

Jag vill ha en länk till källfilen och ha en liveuppdatering. Är det möjligt? Måste jag skriva mitt testprojekt med TS också för att göra det möjligt?

Bibliotek package.json:

{
  ...
  "main": "lib/qr-code-styling.js",
  "files": [
    "lib"
  ],
  "scripts": {
    "build": "webpack --mode=production"
  },
  ...
}

Bibliotekskod https://github.com/kozakdenys/qr-code-styling/tree/v1

Kod för testprojekt https://github.com/kozakdenys/qr-code-styling-site

P.S. Jag försökte också "module": "src/index.ts" i package.json, men det orsakar ett fel i testprojektet Uncaught Error: Cannot find module './core/QRCodeStyling'

Svar #1

Ja, du behöver skriva ditt testprojekt i TypeScript också. Därefter behöver du mappa paketet till de länkade modulkällfilerna i testprojektets tsconfig-fil.

I compilerOptions-posten i tsconfig-filen, lägg till en baseUrl och en paths-post som i följande exempel:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "linked-module-name": ["node_modules/linked-module-name/src"],
      "linked-module-name/*": ["node_modules/linked-module-name/src/*"]
    }
  }
}

Läs mer om sökkartläggning i TypeScript-dokumentationen.

Svar #2

Ett annat alternativ är att låta ditt TS-projekt automatiskt bygga om med tsc --watch och sedan använda den kompilerade koden i ditt projekt via npm link ../path/to/dep

Relaterade artiklar