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
