簡體   English   中英

使用 NodeJS CLI 應用程序時如何指定 NODE_ENV

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM