[英]How to specify NODE_ENV when using NodeJS CLI app
我有一個用 NodeJS 制作的 CLI 應用程序,除了每次都指定它之外,我無法弄清楚如何指定 NODE_ENV 的另一種方式:
NODE_ENV=development myapp
我有兩個環境文件:.env.development 和.env.production
我有一個管理環境的配置文件:
import dotenv from "dotenv";
dotenv.config({ path: `.env.${process.env.NODE_ENV}` });
export const config = {
environment: process.env.NODE_ENV,
postgres_host: process.env.POSTGRES_HOST,
postgres_database: process.env.POSTGRES_DATABASE,
postgres_username: process.env.POSTGRES_USERNAME,
postgres_password: process.env.POSTGRES_PASSWORD,
postgres_port: process.env.POSTGRES_PORT,
telegram_api_key: process.env.TELEGRAM_API_KEY,
telegram_chat_id: process.env.TELEGRAM_CHAT_ID
};
我在需要時使用我的配置 object:
import { config } from "../config/config.js";
export class Postgres {
static connect() {
this.client = new Client({
host: config.postgres_host,
database: config.postgres_database,
user: config.postgres_username,
password: config.postgres_password,
port: config.postgres_port
});
this.client.connect(function(error) {
if (error) throw error;
console.log("Connected to PostgreSQL");
});
}
...
我想使用:
myapp
並在我的 index.js 文件或其他地方設置所選環境。
#! /usr/bin/env node
import { program } from "commander";
import test from "./commands/test.js";
// Set it by default here maybe ?
program
.command("test")
.description("test")
.action(test);
program.parse();
這是我的 package.json:
{
"name": "myapp",
"version": "1.0.0",
"description": "Myapp",
"main": "bin/index.js",
"keywords": [
"cli"
],
"bin": {
"myapp": "./bin/index.js"
},
...
你有好主意嗎?
您可以設置默認環境以在config.js
文件中使用。 加載 dotenv 文件時,您可以指定默認的NODE_ENV
值。 例如,如果你想在沒有指定NODE_ENV
的情況下默認使用.env.development
文件,你可以使用以下行來加載 dotenv 文件。
dotenv.config({ path: `.env.${process.env.NODE_ENV || "development"}` });
你可以輕松地說:
myEnv = process.env.NODE_ENV || "development"
然后像這樣使用myEnv
而不是NODE_ENV
:
import dotenv from "dotenv"
myEnv = process.env.NODE_ENV || "development"
dotenv.config({ path: `.env.${ myEnv }` })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.