<aside>

링크

<aside>

설명

<aside>

Dotenv와의 차이점

dotenv dotenvx
공유 제한(보안) .env, .env.dev 등의 파일을 git 등으로 직접 공유하면 안된다. .env, .env.dev 등의 환경 파일은 암호화되므로 자유롭게 공유해도 되고, 키가 저장되는 .env.keys만 별도로 제공하면 된다.
env 암호화 가능 X O
</aside>

<aside>

기능

.env.* 파일 암호화

dotenvx encrypt -f .env.production

[1] Programatic

// 예시(특정 환경 지정)
require('dotenvx').config({
  env: 'production'  // .env.production.vault 사용
});

[2] Injection

npx dotenvx run --env=production -- {명령어}
npx dotenvx run --env=production -- node server.js

</aside>

<aside>

예시

.env.keys

DOTENV_KEY_DEVELOPMENT="dotenv://:[email protected]/vault/.env.vault?environment=development"
DOTENV_KEY_STAGING="dotenv://:[email protected]/vault/.env.vault?environment=staging"
DOTENV_KEY_PRODUCTION="dotenv://:[email protected]/vault/.env.vault?environment=production"

암호화된 .env.*

# 🔐 Encrypted with dotenvx
DOTENV_PUBLIC_KEY="026d4945b6513baec60f68b207f203ba534fb54d2b0c9952557d240815e42a7d83"

# 🗄️ Database
DB_HOST="encrypted:BMO83g2fEtr66gcFvUs2+/ZuccCQuBbZwSW3JfCLvoUiACmusxCbTfG2dvc2LxenPhUtgWapO8f9BCcBVAcTnMcrd3kndvk+acWytRjIWRUvsSezdD340/OT5EQgbqJtwXfuRz0i2t8PVA=="
DB_PORT="encrypted:BGcRf5bK/mChGEqT1MZ8hUbMm3hhtuW9NVGkHtl7KRwqbSKnVcGIDs9T61u77DlyNlYcF1BlLCw9HPmbRQ0nFvLOCZc6r42iRE4OyJw9mu61OjlWQfEl5Z1NrjZw5g0d1tp8New="
DB_USER="encrypted:BBrXv55qxgA19sEqqNnZzS/C0WguVk6ROQmfxnGhBhafLoc0XwpKprk/J3hJCVq7s45WyBSXGUz9U9rHxCBeVkl27WFzzgZkDewX0gBLt+Cc37K0EVU2hZ1GPbax5mzpI5Jwwi65be6+"
DB_PASSWORD="encrypted:BC8aRBQ/Q2YMPjJayggqVN8skqTtxtXFgYA0e8/Ud/Jcez2Daukr6edBmEWQdz/Lu91casaW6CkkCvLSQkPvNpmgYqFB4BKHTUDowX/KEDvVI6CU5Vt478VF5dqHbvPIoKKtBe+4FNXlk5O96A=="
DB_NAME="encrypted:BL0icNnZh6InVmymJBCX6MuL6cwgVc4v1ua1g1XONlV7nkzzHHHpnZN3khx7+ld15bd88EtV4DfqUV2eJ/HJwu0/5F1MH+PAisYSRxBQo8I9AHly2sRsonBm3Bji+DslcC4D7b7wLTBlfCw="

# 🔑 API
API_KEY="encrypted:BCrnJ2sAZH2qwRlPvUqqWyEsd+cVeMQiOV5H/xZ7vjFfcMXHMunmAv/7+jUI356fkVtHfrXu+vBJLjXJiirgB2gky5vvy7h5jevgMS6BgPL5KwjC0tYPlYbe4Bfrf1funYqqrFYaPjsEO+77vCtVaBPz"
STRIPE_API_KEY="encrypted:BOD5Fg+qI9dqhkh+gjCLrTFyhxEAhNDtLgwjkMZOr9l9CsvvhprwCrgsZbIRIFa1Vf6ATnWZ3/bacYnlBXlZ1Hc6YMZHog+ZuVW4AjwxCkB8I0AkcOeOsYzQx2fdtI4kFii01UIhN53jfmUjzLSPYw=="

</aside>