node.js - Kan inte inkludera .key-fil i TypeScript-bygg


Jag har en public.key och en private.key-fil i min mappstruktur som inte inkluderas i bygget, dvs när jag kör tsc.

Jag använder de publika/privata nyckelparen för att generera en JSON-webbtoken. Så här importerar jag filen, vilket fungerar bra och genererar token.

private publicKey = fs.readFileSync(path.join(__dirname, "../../utils/keys/public.key"), "utf8");

Samma kod gäller för private.key, bara med filnamnsändringen.

Detta är min tsconfig.json-fil

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "noImplicitAny": false,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist/",
    "pretty": true,
    "baseUrl": ".",
    "alwaysStrict": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "paths": {
      "*": ["node_modules/*", "src/*", "*"]
    }
  },
  "include": ["src/**/**/*.ts"],
  "exclude": ["node_modules"]
}

Finns det ett sätt att be TypeScript att inkludera *.key-filen?

Svar #1

TypeScript transkompilerar *.ts* och *.js*-filer. Det här är inte en uppgift för TypeScript att bearbeta icke-skriptfiler och inkludera dem i ett bygge.

Bundling är en uppgift för Webpack, som kan användas för att ladda godtyckliga filer med respektive loaders, t.ex. file-loader, men filer förväntas användas med import eller require i detta fall och inte fs. Det är heller inte nödvändigt att använda Webpack med Node.js-applikationer eftersom de inte drar lika stor nytta av detta som klientbaserade applikationer.

I det här fallet borde keys inte alls vara en del av dist, om inte annat bevisas. Det kan ligga utanför src eller dist och vara på samma nästlingsnivå:

dist
  ...
src
  ...
util
  keys

Eftersom relativa sökvägar förväntas vara samma både inom src och dist, bör det inte vara några problem att länka till util/keys