node.js - Hur man placerar .env och andra filer i dist-mappen när man bygger ett projekt i node?


Jag använder Typescript i mitt Node-projekt och detta är min tsconfig -

{
    "compilerOptions": {
        "module": "commonjs",
        "esModuleInterop": true,
        "target": "es6",
        "noImplicitAny": true,
        "moduleResolution": "node",
        "sourceMap": true,
        "outDir": "dist/application",
        "baseUrl": "./src",
        "paths": {
            "*": [
                "node_modules/*",
                "src/shared/types/*"
            ]
        }    
    },
    "include": [
        "src/**/*"
    ],
    "exclude": [
        "node_modules"
    ],
    "typedocOptions": {
        "mode": "modules",
        "out": "docs"
    }
}

Det här är min applikations mappstruktur -

.
├── dist
│   └── application
│       ├── app.js
│       ├── app.js.map
│       ├── modules
│       └── shared
├── environments
│   └── .env.development
├── node_modules
├── nodemon.json
├── package-lock.json
├── package.json
├── security
│   ├── domain.crt
│   └── domain.key
├── src
│   ├── app.ts
│   ├── modules
│   │   ├── chat
│   │   ├── main-controller.ts
│   │   └── sso
│   └── shared
│       ├── constants
│       ├── models
│       ├── types
│       └── utils
├── tsconfig.json
└── typedoc.json

Efter kompilering placerar Typescript-kompilatorn allt i .dist/application.

Under utveckling var min huvudfil (app.ts) i ./src/app.ts. I denna app.ts-fil försökte jag läsa .env.development-filen i ./src/app.ts. Så här läste jag denna fil i app.ts -

config({ path: resolve(Utils.getAppRoot(), "../environments/.env.development") });

men vid körning kan systemet inte lösa sökvägen för .env-filen, eftersom TS-kompilatorn placerar app.ts-koden i ./dist/application/app.js, och Node kan inte hitta sökvägen till .env-filen med avseende på den aktuella rotvägen.

För att lösa detta problem behöver jag kopiera alla mina konfigurations-/statiska filer (här, .env-filen) till ./dist-mappen vid kompilering.

Kan någon hjälpa mig att ställa in ts-konfigurationen så att dessa statiska filer kopieras till ./dist/folder vid kompilering?

Svar #1

Jag tror inte att du kan göra detta med TypeScript-kompilatorn. Istället rekommenderar jag att använda NPM-skript för att göra detta. Du kan definiera en separat bygguppgift för varje målmiljö. Till exempel kan du definiera uppgiften build-dev för att bygga projektet för utvecklingsmiljön på följande sätt.

"build-dev": "cp .env.development ./dist/.env && tsc"

Du kan ha ett skript för varje miljö och kopiera rätt .env-fil till dist-mappen. Sedan kan du köra dessa uppgifter med NPM run-kommandot, till exempel:

npm run build-dev

Relaterade artiklar