diff --git a/packages/cli/package.json b/packages/cli/package.json index 50d58c7d00..30ecff8931 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ "dependencies": { "cac": "^6.7.12", "chokidar": "^3.5.3", + "dotenv": "^16.0.0", "js-yaml": "^4.1.0", "kleur": "^4.1.4", "koishi": "^4.2.0", diff --git a/packages/cli/src/loader.ts b/packages/cli/src/loader.ts index a813312a62..221b822626 100644 --- a/packages/cli/src/loader.ts +++ b/packages/cli/src/loader.ts @@ -2,6 +2,7 @@ import { resolve, extname, dirname, isAbsolute } from 'path' import { readdirSync, readFileSync, writeFileSync } from 'fs' import { App, Dict, Logger, interpolate, Modules, unwrapExports, valueMap } from 'koishi' import * as yaml from 'js-yaml' +import * as dotenv from 'dotenv' declare module 'koishi' { namespace Context { @@ -81,6 +82,11 @@ export class Loader { config = module.default || module } + // load .env file into process.env + dotenv.config({ + path: resolve(this.dirname, '.env'), + }) + let resolved = new App.Config(config) if (this.isWritable) { // schemastery may change original config