@einja/dev-cli 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/file-system.js +1 -1
- package/dist/lib/file-system.js.map +1 -1
- package/package.json +1 -2
- package/scaffolds/cli/preset.yaml +110 -0
- package/scaffolds/example/README.md +35 -0
- package/scaffolds/example/specs/issues/issue999-example-task/design.md +879 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/README.md +150 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +268 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +179 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +392 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +459 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +125 -0
- package/scaffolds/example/specs/issues/issue999-example-task/requirements.md +494 -0
- package/scaffolds/example/specs/issues/issue999-example-task/tasks.md +212 -0
- package/scaffolds/instructions/deployment-setup.md +458 -0
- package/scaffolds/instructions/environment-setup.md +509 -0
- package/scaffolds/instructions/local-server-environment-and-worktree.md +539 -0
- package/scaffolds/instructions/task-execute.md +649 -0
- package/scaffolds/instructions/task-vibe-kanban-loop.md +495 -0
- package/scaffolds/memory/archive/.gitkeep +0 -0
- package/scaffolds/memory/decisions.md +26 -0
- package/scaffolds/memory/patterns.md +28 -0
- package/scaffolds/CLAUDE.md.template +0 -386
- /package/{templates → scaffolds/templates}/README.md +0 -0
- /package/{templates → scaffolds/templates}/design-simple.md.template +0 -0
- /package/{templates → scaffolds/templates}/design.md.template +0 -0
- /package/{templates → scaffolds/templates}/qa-test.md.template +0 -0
- /package/{templates → scaffolds/templates}/requirements.md.template +0 -0
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# 環境変数セットアップ手順
|
|
3
|
+
|
|
4
|
+
開発環境およびデプロイ環境の環境変数設定手順をまとめたドキュメントです。
|
|
5
|
+
|
|
6
|
+
設計方針については以下を参照してください:
|
|
7
|
+
- [環境変数設計方針](../steering/infrastructure/environment-variables.md)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🔑 環境変数ファイルの仕組み
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
.env.local(暗号化・Git共有)
|
|
15
|
+
↓ pnpm dev:setup で復号
|
|
16
|
+
.env(作業用・毎回再生成)+ .env.personal(個人トークン)
|
|
17
|
+
↓ direnv で自動読み込み
|
|
18
|
+
開発サーバー
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
| ファイル | Git | 用途 |
|
|
22
|
+
|---------|:---:|------|
|
|
23
|
+
| `.env.local` | ✅ | チーム共有の秘密情報(暗号化) |
|
|
24
|
+
| `.env` | ❌ | 作業用(pnpm devで毎回再生成) |
|
|
25
|
+
| `.env.personal` | ❌ | 個人トークン(GITHUB_TOKEN等) |
|
|
26
|
+
|
|
27
|
+
> 📖 **詳しい仕組み・FAQは「[環境変数設計方針](../steering/infrastructure/environment-variables.md#2-ローカル開発のファイル構成)」を参照**
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 目次
|
|
32
|
+
|
|
33
|
+
1. [ローカル開発環境セットアップ](#1-ローカル開発環境セットアップ)
|
|
34
|
+
2. [dotenvxの使用方法](#2-dotenvxの使用方法)
|
|
35
|
+
3. [環境変数ファイルの作成](#3-環境変数ファイルの作成)
|
|
36
|
+
4. [暗号化手順](#4-暗号化手順)
|
|
37
|
+
5. [秘密鍵の管理](#5-秘密鍵の管理)
|
|
38
|
+
6. [CI/CD環境での使用](#6-cicd環境での使用)
|
|
39
|
+
7. [トラブルシューティング](#7-トラブルシューティング)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 1. ローカル開発環境セットアップ
|
|
44
|
+
|
|
45
|
+
### 自動セットアップ(推奨)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 開発環境の一括セットアップ
|
|
49
|
+
pnpm dev:setup
|
|
50
|
+
|
|
51
|
+
# セットアップ内容:
|
|
52
|
+
# - Volta(Node.jsバージョン管理)
|
|
53
|
+
# - direnv(環境変数自動読み込み)
|
|
54
|
+
# - dotenvx(環境変数暗号化)
|
|
55
|
+
# - .env ファイル作成
|
|
56
|
+
# - GITHUB_TOKEN設定(対話式)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 環境変数の設定・変更(対話式ウィザード)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# 環境変数設定ウィザードを起動
|
|
63
|
+
pnpm env:update
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
対話式で以下の操作ができます:
|
|
67
|
+
- **個人トークンを設定** - GITHUB_TOKEN等を`.env.personal`に設定
|
|
68
|
+
- **チーム共有設定を変更** - `.env.local`の復号→編集→再暗号化
|
|
69
|
+
- **現在の状態を確認** - 環境変数ファイルの存在状況を表示
|
|
70
|
+
|
|
71
|
+
### 手動セットアップ
|
|
72
|
+
|
|
73
|
+
#### Step 1: dotenvxインストール
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# macOS/Linux(推奨)
|
|
77
|
+
curl -sfS https://dotenvx.sh/install.sh | sh
|
|
78
|
+
|
|
79
|
+
# または npm経由
|
|
80
|
+
npm install -g @dotenvx/dotenvx
|
|
81
|
+
|
|
82
|
+
# インストール確認
|
|
83
|
+
dotenvx --version
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Step 2: 環境変数ファイルの復号・作成
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# .env.local(暗号化済み)を復号して .env を作成
|
|
90
|
+
# ※ .env.keys に秘密鍵が必要(チームから共有を受けてください)
|
|
91
|
+
dotenvx decrypt -f .env.local -o .env
|
|
92
|
+
|
|
93
|
+
# 個人用トークンファイルをテンプレートからコピー
|
|
94
|
+
cp .env.personal.example .env.personal
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### Step 3: 個人用トークンを設定
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# .env.personal を編集(GITHUB_TOKEN等の個人トークン)
|
|
101
|
+
# ※ .env は直接編集しない(.env.local から自動生成されるため)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Step 4: direnv有効化
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
direnv allow
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 2. dotenvxの使用方法
|
|
113
|
+
|
|
114
|
+
### 基本コマンド
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# 環境変数を読み込んでコマンド実行
|
|
118
|
+
dotenvx run -- <command>
|
|
119
|
+
|
|
120
|
+
# 特定の環境ファイルを指定
|
|
121
|
+
dotenvx run -f .env.production -- <command>
|
|
122
|
+
|
|
123
|
+
# 複数ファイルを指定(後勝ち)
|
|
124
|
+
dotenvx run -f .env -f .env.local -- <command>
|
|
125
|
+
|
|
126
|
+
# 環境変数を暗号化
|
|
127
|
+
dotenvx encrypt -f .env.production
|
|
128
|
+
|
|
129
|
+
# 暗号化ファイルを復号(確認用)
|
|
130
|
+
dotenvx decrypt -f .env.production
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### package.jsonでの使用例
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"scripts": {
|
|
138
|
+
"build": "dotenvx run -f .env.production -- turbo run build",
|
|
139
|
+
"build:staging": "dotenvx run -f .env.staging -- turbo run build",
|
|
140
|
+
"build:dev": "dotenvx run -f .env.development -- turbo run build",
|
|
141
|
+
"build:local": "turbo run build"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 3. 環境変数ファイルの作成
|
|
149
|
+
|
|
150
|
+
### ファイル構成
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
プロジェクトルート/
|
|
154
|
+
├── .env.example # .envの参考テンプレート(Git追跡)
|
|
155
|
+
├── .env.personal.example # 個人用トークンのテンプレート(Git追跡)
|
|
156
|
+
├── .env.local # ローカル開発用(暗号化・Git追跡)★
|
|
157
|
+
├── .env.development # dev検証サーバー用(暗号化・Git追跡)
|
|
158
|
+
├── .env.staging # ステージング用(暗号化・Git追跡)
|
|
159
|
+
├── .env.production # 本番環境用(暗号化・Git追跡)
|
|
160
|
+
├── .env.ci # CI/CD用(暗号化・Git追跡)
|
|
161
|
+
├── .env.keys # 秘密鍵(Git除外・1Password等で共有)
|
|
162
|
+
├── .env # .env.localを復号したもの(Git除外)
|
|
163
|
+
└── .env.personal # 個人用トークン(Git除外)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**★ポイント**: `.env.local` は暗号化されてGitで共有。`pnpm dev:setup` で復号して `.env` が生成される。
|
|
167
|
+
|
|
168
|
+
### .env.personal.example(個人用トークンテンプレート)
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# GitHub MCP接続用(Claude Code開発時に必要)
|
|
172
|
+
# 取得方法: https://github.com/settings/tokens/new
|
|
173
|
+
# 必要なスコープ: repo, read:org
|
|
174
|
+
GITHUB_TOKEN=
|
|
175
|
+
|
|
176
|
+
# その他の個人用トークン(必要に応じて)
|
|
177
|
+
# OPENAI_API_KEY=
|
|
178
|
+
# ANTHROPIC_API_KEY=
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### デプロイ環境ファイル作成
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# 開発サーバー用
|
|
185
|
+
cat > .env.development << 'EOF'
|
|
186
|
+
# Development Environment
|
|
187
|
+
DATABASE_URL="postgresql://user:pass@dev-db:5432/einja_dev"
|
|
188
|
+
NEXTAUTH_SECRET="dev-secret-key"
|
|
189
|
+
NEXTAUTH_URL="https://dev.example.com"
|
|
190
|
+
NODE_ENV="development"
|
|
191
|
+
EOF
|
|
192
|
+
|
|
193
|
+
# ステージング用
|
|
194
|
+
cat > .env.staging << 'EOF'
|
|
195
|
+
# Staging Environment
|
|
196
|
+
DATABASE_URL="postgresql://user:pass@staging-db:5432/einja_staging"
|
|
197
|
+
NEXTAUTH_SECRET="staging-secret-key"
|
|
198
|
+
NEXTAUTH_URL="https://staging.example.com"
|
|
199
|
+
NODE_ENV="staging"
|
|
200
|
+
EOF
|
|
201
|
+
|
|
202
|
+
# 本番環境用
|
|
203
|
+
cat > .env.production << 'EOF'
|
|
204
|
+
# Production Environment
|
|
205
|
+
DATABASE_URL="postgresql://user:pass@prod-db:5432/einja"
|
|
206
|
+
NEXTAUTH_SECRET="production-secret-key-generate-with-openssl"
|
|
207
|
+
NEXTAUTH_URL="https://example.com"
|
|
208
|
+
NODE_ENV="production"
|
|
209
|
+
EOF
|
|
210
|
+
|
|
211
|
+
# CI/CD用
|
|
212
|
+
cat > .env.ci << 'EOF'
|
|
213
|
+
# CI Environment
|
|
214
|
+
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/einja_test"
|
|
215
|
+
NEXTAUTH_SECRET="ci-test-secret"
|
|
216
|
+
NEXTAUTH_URL="http://localhost:3000"
|
|
217
|
+
NODE_ENV="test"
|
|
218
|
+
EOF
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 4. 暗号化手順
|
|
224
|
+
|
|
225
|
+
### Step 1: 環境ファイルを暗号化
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# 各環境ファイルを暗号化
|
|
229
|
+
dotenvx encrypt -f .env.development
|
|
230
|
+
dotenvx encrypt -f .env.staging
|
|
231
|
+
dotenvx encrypt -f .env.production
|
|
232
|
+
dotenvx encrypt -f .env.ci
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Step 2: 暗号化結果の確認
|
|
236
|
+
|
|
237
|
+
暗号化後、ファイルは以下のような形式になります:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# .env.production(暗号化後)
|
|
241
|
+
#/-------------------[DOTENV_PUBLIC_KEY]--------------------/
|
|
242
|
+
#/ public-key encryption for .env files /
|
|
243
|
+
#/ [how it works](https://dotenvx.com/encryption) /
|
|
244
|
+
#/----------------------------------------------------------/
|
|
245
|
+
DOTENV_PUBLIC_KEY_PRODUCTION="03762856de9995b05b0bab64d15f4d23..."
|
|
246
|
+
|
|
247
|
+
# Production Environment
|
|
248
|
+
DATABASE_URL=encrypted:BKWps41fS2ZxysyF8QaWcaywV8koGwQB31/3...
|
|
249
|
+
NEXTAUTH_SECRET=encrypted:BIsPWaPuZKcIShhWg/mkQ4hAIb5XfJxHq8...
|
|
250
|
+
NEXTAUTH_URL=encrypted:BGqfAinM4i1q4jyFHGgDieBnatHXGHLbMsC1...
|
|
251
|
+
NODE_ENV=encrypted:BDqRRvYcNnJ5rYo4c8Zhu/lThghcW8b6+7u4+M...
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Step 3: 秘密鍵の確認
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# .env.keys に秘密鍵が生成される
|
|
258
|
+
cat .env.keys
|
|
259
|
+
|
|
260
|
+
# 出力例:
|
|
261
|
+
# DOTENV_PRIVATE_KEY_DEVELOPMENT=8afef18fa6e433593a5116cc406c83a44c4385b3f4f7d4cc25750e39f2baa320
|
|
262
|
+
# DOTENV_PRIVATE_KEY_STAGING=548887285654af264275d8c58e87c82dd7958ac6e99760fb5aa5eca8e1efb35d
|
|
263
|
+
# DOTENV_PRIVATE_KEY_PRODUCTION=73890d5288241cb6738b7172d5ee1bf2dd4aac8319442d951e31d123304f180d
|
|
264
|
+
# DOTENV_PRIVATE_KEY_CI=4165a821b257a073b2b0a4b4e180b86accc76eec773ec53c6443626615c7d979
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Step 4: Gitにコミット
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# 暗号化されたファイルをコミット
|
|
271
|
+
git add .env.development .env.staging .env.production .env.ci
|
|
272
|
+
git commit -m "chore: 環境変数ファイルを暗号化"
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 📝 チーム共有設定(.env.local)を変更するとき
|
|
276
|
+
|
|
277
|
+
ローカル開発用の共通設定を変更したい場合の手順:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# 1. 現在の暗号化ファイルを復号(テンポラリファイルに出力)
|
|
281
|
+
dotenvx decrypt -f .env.local -o .env.local.tmp
|
|
282
|
+
|
|
283
|
+
# 2. テンポラリファイルを編集
|
|
284
|
+
vi .env.local.tmp # または好みのエディタで編集
|
|
285
|
+
|
|
286
|
+
# 3. 元のファイルを削除して、編集済みファイルをリネーム
|
|
287
|
+
rm .env.local
|
|
288
|
+
mv .env.local.tmp .env.local
|
|
289
|
+
|
|
290
|
+
# 4. 再暗号化
|
|
291
|
+
dotenvx encrypt -f .env.local
|
|
292
|
+
|
|
293
|
+
# 5. コミット&プッシュ
|
|
294
|
+
git add .env.local
|
|
295
|
+
git commit -m "chore: ローカル開発設定を更新"
|
|
296
|
+
git push
|
|
297
|
+
|
|
298
|
+
# 6. チームメンバーへの通知
|
|
299
|
+
# → メンバーは git pull 後に pnpm dev:setup で反映
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**注意**: `.env.keys` に対応する秘密鍵(`DOTENV_PRIVATE_KEY_LOCAL`)が必要です。
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## 5. 秘密鍵の管理
|
|
307
|
+
|
|
308
|
+
### 保管場所
|
|
309
|
+
|
|
310
|
+
| 保管場所 | 用途 | アクセス権限 |
|
|
311
|
+
|---------|------|------------|
|
|
312
|
+
| 1Password | チーム共有 | 開発者全員 |
|
|
313
|
+
| GitHub Secrets | CI/CD | GitHub Actions |
|
|
314
|
+
| Vercel Dashboard | 本番デプロイ | 管理者のみ |
|
|
315
|
+
| Railway Variables | Cronワーカー | 管理者のみ |
|
|
316
|
+
|
|
317
|
+
### 1Passwordへの保存
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# .env.keys の内容を1Passwordに保存
|
|
321
|
+
# Vault: Development
|
|
322
|
+
# Item Name: einja-dotenvx-keys
|
|
323
|
+
# Type: Secure Note
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### GitHub Secretsへの登録
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
# CI用秘密鍵を登録
|
|
330
|
+
gh secret set DOTENV_PRIVATE_KEY_CI --body "$(grep DOTENV_PRIVATE_KEY_CI .env.keys | cut -d= -f2)"
|
|
331
|
+
|
|
332
|
+
# 本番用秘密鍵を登録(必要に応じて)
|
|
333
|
+
gh secret set DOTENV_PRIVATE_KEY_PRODUCTION --body "$(grep DOTENV_PRIVATE_KEY_PRODUCTION .env.keys | cut -d= -f2)"
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Vercel環境変数への登録
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Vercel CLIで設定
|
|
340
|
+
vercel env add DOTENV_PRIVATE_KEY_PRODUCTION production
|
|
341
|
+
|
|
342
|
+
# または Vercel Dashboard から設定
|
|
343
|
+
# Settings > Environment Variables > Add
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 6. CI/CD環境での使用
|
|
349
|
+
|
|
350
|
+
### GitHub Actions設定例
|
|
351
|
+
|
|
352
|
+
```yaml
|
|
353
|
+
# .github/workflows/ci.yml
|
|
354
|
+
name: CI
|
|
355
|
+
|
|
356
|
+
on:
|
|
357
|
+
push:
|
|
358
|
+
branches: [main]
|
|
359
|
+
pull_request:
|
|
360
|
+
branches: [main]
|
|
361
|
+
|
|
362
|
+
jobs:
|
|
363
|
+
test:
|
|
364
|
+
runs-on: ubuntu-latest
|
|
365
|
+
|
|
366
|
+
steps:
|
|
367
|
+
- uses: actions/checkout@v4
|
|
368
|
+
|
|
369
|
+
- name: Setup pnpm
|
|
370
|
+
uses: pnpm/action-setup@v4
|
|
371
|
+
with:
|
|
372
|
+
version: 10.14.0
|
|
373
|
+
|
|
374
|
+
- name: Setup Node.js
|
|
375
|
+
uses: actions/setup-node@v4
|
|
376
|
+
with:
|
|
377
|
+
node-version: '22.16.0'
|
|
378
|
+
cache: 'pnpm'
|
|
379
|
+
|
|
380
|
+
- name: Install dependencies
|
|
381
|
+
run: pnpm install --frozen-lockfile
|
|
382
|
+
|
|
383
|
+
- name: Generate Prisma Client
|
|
384
|
+
run: pnpm db:generate
|
|
385
|
+
|
|
386
|
+
- name: Run TypeScript type check
|
|
387
|
+
run: pnpm typecheck
|
|
388
|
+
|
|
389
|
+
- name: Run lint
|
|
390
|
+
run: pnpm lint
|
|
391
|
+
|
|
392
|
+
- name: Run tests
|
|
393
|
+
run: pnpm test
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### 本番ビルド時の使用
|
|
397
|
+
|
|
398
|
+
```yaml
|
|
399
|
+
# デプロイワークフローでの使用例
|
|
400
|
+
- name: Build for production
|
|
401
|
+
run: pnpm build
|
|
402
|
+
env:
|
|
403
|
+
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## 7. トラブルシューティング
|
|
409
|
+
|
|
410
|
+
### dotenvxコマンドが見つからない
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
# PATHを確認
|
|
414
|
+
which dotenvx
|
|
415
|
+
|
|
416
|
+
# 再インストール
|
|
417
|
+
curl -sfS https://dotenvx.sh/install.sh | sh
|
|
418
|
+
|
|
419
|
+
# または npm経由
|
|
420
|
+
npm install -g @dotenvx/dotenvx
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### 復号エラー: "missing private key"
|
|
424
|
+
|
|
425
|
+
**原因**: 秘密鍵が環境変数にセットされていない
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
# 秘密鍵を確認
|
|
429
|
+
echo $DOTENV_PRIVATE_KEY_PRODUCTION
|
|
430
|
+
|
|
431
|
+
# .env.keys から読み込み
|
|
432
|
+
source .env.keys
|
|
433
|
+
dotenvx run -f .env.production -- echo "OK"
|
|
434
|
+
|
|
435
|
+
# または直接指定
|
|
436
|
+
DOTENV_PRIVATE_KEY_PRODUCTION=xxx dotenvx run -f .env.production -- echo "OK"
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### 暗号化エラー: "file already encrypted"
|
|
440
|
+
|
|
441
|
+
**原因**: 既に暗号化済みのファイルを再暗号化しようとした
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
# 一度復号してから再暗号化
|
|
445
|
+
dotenvx decrypt -f .env.production
|
|
446
|
+
# ファイルを編集
|
|
447
|
+
dotenvx encrypt -f .env.production
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### direnvで環境変数が読み込まれない
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
# direnvを許可
|
|
454
|
+
direnv allow
|
|
455
|
+
|
|
456
|
+
# シェルフックを確認
|
|
457
|
+
# .zshrc または .bashrc に以下があるか確認
|
|
458
|
+
eval "$(direnv hook zsh)" # または bash
|
|
459
|
+
|
|
460
|
+
# シェルを再起動
|
|
461
|
+
exec $SHELL
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### CI/CDで環境変数が見えない
|
|
465
|
+
|
|
466
|
+
**原因**: GitHub Secretsの設定ミス
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# Secretsを確認
|
|
470
|
+
gh secret list
|
|
471
|
+
|
|
472
|
+
# Secretを再設定
|
|
473
|
+
gh secret set DOTENV_PRIVATE_KEY_CI --body "正しい秘密鍵"
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### 環境変数の優先順位が期待と異なる
|
|
477
|
+
|
|
478
|
+
**ロード順序(後勝ち)**:
|
|
479
|
+
1. `.env` - 基本設定
|
|
480
|
+
2. `.env.local` - ローカルオーバーライド
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
# 明示的に順序を指定
|
|
484
|
+
dotenvx run -f .env -f .env.local -- <command>
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## 関連ドキュメント
|
|
490
|
+
|
|
491
|
+
- [デプロイセットアップ手順](./deployment-setup.md)
|
|
492
|
+
- [環境変数設計方針](../steering/infrastructure/environment-variables.md)
|
|
493
|
+
- [デプロイメント・CI/CD設計方針](../steering/infrastructure/deployment.md)
|
|
494
|
+
|
|
495
|
+
## 参考リンク
|
|
496
|
+
|
|
497
|
+
- [dotenvx公式ドキュメント](https://dotenvx.com/docs)
|
|
498
|
+
- [dotenvx暗号化の仕組み](https://dotenvx.com/encryption)
|
|
499
|
+
- [direnv公式ドキュメント](https://direnv.net/)
|
|
500
|
+
<!-- @einja:managed:end -->
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
<!-- @einja:seed:start id="environment-setup-project" -->
|
|
505
|
+
## プロジェクト固有の設定
|
|
506
|
+
|
|
507
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
508
|
+
<!-- einja syncで上書きされません -->
|
|
509
|
+
<!-- @einja:seed:end -->
|