英文:
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
};
当需要时,我使用我的配置对象:
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";
// 可以在这里设置默认值吗?
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"
},
...
}
你有什么想法吗?
英文:
I have a CLI app made with NodeJS and I can't figure out how to specify NODE_ENV another way than specify it everytime :
NODE_ENV=development myapp
I have two env files : .env.development and .env.production
I have a config files that manage the environment :
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
};
And I use my config object when needed :
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");
});
}
...
I'd like to use :
myapp
And set the chosen environment in my index.js file or somewhere else.
#! /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();
This is my package.json :
{
"name": "myapp",
"version": "1.0.0",
"description": "Myapp",
"main": "bin/index.js",
"keywords": [
"cli"
],
"bin": {
"myapp": "./bin/index.js"
},
...
Do you have an idea ?
答案1
得分: 1
你可以在你的 config.js
文件中设置一个默认环境。在加载你的 dotenv 文件时,你可以指定一个默认的 NODE_ENV
值。例如,如果你希望在未指定 NODE_ENV
时默认使用 .env.development
文件,你可以使用以下行来加载 dotenv 文件。
dotenv.config({ path: `.env.${process.env.NODE_ENV || "development"}` });
英文:
You can set a default environment to use in your config.js
file. When loading your dotenv file, you can specify a default NODE_ENV
value. For example, if you want to use the .env.development
file by default if NODE_ENV
is not specified, you can use the following line to load the dotenv file.
dotenv.config({ path: `.env.${process.env.NODE_ENV || "development"}` });
答案2
得分: 1
你可以轻松地说:
myEnv = process.env.NODE_ENV || "development"
然后像这样使用 myEnv
而不是 NODE_ENV
:
import dotenv from "dotenv"
myEnv = process.env.NODE_ENV || "development"
dotenv.config({ path: `.env.${myEnv}` })
英文:
you can easily say:
myEnv = process.env.NODE_ENV || "development"
and then use myEnv
instead of NODE_ENV
like that:
import dotenv from "dotenv"
myEnv = process.env.NODE_ENV || "development"
dotenv.config({ path: `.env.${ myEnv }` })
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论