create-einja-app 0.2.11 → 0.2.13
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/README.md +5 -5
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/.env.ci +11 -4
- package/templates/default/.env.preview +25 -0
- package/templates/default/.github/workflows/ci.yml +73 -1
- package/templates/default/AGENTS.md +3 -0
- package/templates/default/apps/web/src/lib/auth/index.ts +5 -0
- package/templates/default/scripts/env-show.ts +1 -0
- package/templates/default/scripts/lib/env-common.ts +6 -0
package/package.json
CHANGED
|
@@ -15,11 +15,18 @@ DOTENV_PUBLIC_KEY_CI="02c888edf6b766c5a9781ab2966c142b5f401e9a9d534aab37d6c0fa5c
|
|
|
15
15
|
# ============================================
|
|
16
16
|
|
|
17
17
|
# NextAuth設定
|
|
18
|
-
NEXTAUTH_SECRET=encrypted:
|
|
19
|
-
NEXTAUTH_URL=encrypted:
|
|
18
|
+
NEXTAUTH_SECRET=encrypted:BE5okc8s1H3DEle7Nb1MQybvn2KcTL2gTf1+Nd513LIRisBPPrxmE53QLV30BB64jkUsvhfC7Lgp22Hv3NL9QjgOttZxiWtVvwQyIVbIHEEdd/ett7mQxSzqw851VbMvy0TUxZ+uWvmsc55vLsy9OzUjGA==
|
|
19
|
+
NEXTAUTH_URL=encrypted:BAx6JGRICeXVikbQhLPuF8v3RyvLhJpA36lcvVMWmbj73YnTX3jLhd7lWYgFoJVFnhtM/0ivfklrWSQW6sTS3iN+8LsQeOW0nR/LwBA9HtpbX9mb4eU8vs0cL0oB/Ev/duDjJdTEYtDgmStrZn+3jnUJw8gdUg==
|
|
20
20
|
|
|
21
21
|
# データベース設定(CI用SQLite/PostgreSQL)
|
|
22
|
-
DATABASE_URL="encrypted:
|
|
22
|
+
DATABASE_URL="encrypted:BGQiR+EvdBFF0QXCwpexpZX0orPNntDQAUc37se1ZLzalhQrKcAvOZMhtFwGN0CAL21rzLHxmMN7ndiTDfHy9a8hr+Gpgk2sar1miUp+CI5l3VKQFOzgcCIe9uGoHIYU/p5yYSh9ROL6HBhCTCPlqe5Jyz+md9nkNhApqyedHmdmK5Vr5yC5cmEWltG2Krj/WBDw4hAkIST+Vzh355ZS3QT5oBVr53c="
|
|
23
23
|
|
|
24
24
|
# アプリケーション設定
|
|
25
|
-
NODE_ENV=encrypted:
|
|
25
|
+
NODE_ENV=encrypted:BMz9t7QSXJ+dMA5otX1d9bLq/2JR4/j4QwAsCmfiPXtUfwANtPlyigFGcq9fCOdtmTZ5pHgKtGFsO3LQ8JmTgutx9dj0IeeVnFFaVKkEBhsrBzIsrnm4kAgvtA/PqwGXeNT5UE0=
|
|
26
|
+
|
|
27
|
+
VERCEL_TOKEN=
|
|
28
|
+
VERCEL_ORG_ID=
|
|
29
|
+
VERCEL_WEB_PROJECT_ID_WEB=
|
|
30
|
+
|
|
31
|
+
TURBO_TOKEN=encrypted:BCX+8GLR1/VqhVW3JzqOXHP8JD6PjQhkodGY3W3gDzz64H/kI2HRQyBviTa7x5gsjXF7FqggzxZ/zkC//ixrFlvLQa1beC/5odd8rBEvs+ZGHWEeLG8c5XxudVsTsHIWjA==
|
|
32
|
+
TURBO_TEAM=encrypted:BMSAczdJn8VnXxSvrIqn38ubQ334pbFtFyeKkmK2995mvj7B17YE5oCYmKIUxQdzkbD7NWLhOrjTkAqAXODpxVxi9JGjy8T2d7a8F6lurz7AY84jVY3tlcuYKWyw2RIrOA==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#/-------------------[DOTENV_PUBLIC_KEY]--------------------/
|
|
2
|
+
#/ public-key encryption for .env files /
|
|
3
|
+
#/ [how it works](https://dotenvx.com/encryption) /
|
|
4
|
+
#/----------------------------------------------------------/
|
|
5
|
+
DOTENV_PUBLIC_KEY_PREVIEW="02c67d6a9b0801daaa8da8b6551ca9926caaabe66bc026eef21fe2978fee7885a1"
|
|
6
|
+
|
|
7
|
+
# .env.preview
|
|
8
|
+
# ============================================
|
|
9
|
+
# Preview Environment
|
|
10
|
+
# ============================================
|
|
11
|
+
# プレビュー環境用
|
|
12
|
+
# dotenvxで暗号化されます
|
|
13
|
+
#
|
|
14
|
+
# 編集方法: pnpm env:update → 「環境設定を変更」→「プレビュー環境」
|
|
15
|
+
# ============================================
|
|
16
|
+
|
|
17
|
+
# NextAuth設定
|
|
18
|
+
NEXTAUTH_SECRET=encrypted:BMKN/5u9wfDSKiM59bDYhUGJWXsfx8WK0gjBQh7lrUc3fJQq8xUU3V9nIquJp6ItgdsaLxnbYfDHDIMatqZMHywPjrRLLYjlwM3PgOQd8eyO7I5USMVoIi0zJ8OzxThFxtnRCciibEPZdc77p4hvUOd2oVJffQEVXaCFUKA=
|
|
19
|
+
NEXTAUTH_URL=encrypted:BKfwQ8NiyWCxEY3KbCkt7HylNjt2fSbzDqba46P2HXLqCrj/3fZFc9M/p29ZhQ6EiXPzsT9ULfCZwCaRA1+FmQDE5aejR4vAad5csHbozTnFJgkMmigeHpKbLJK0nhQjIQ==
|
|
20
|
+
|
|
21
|
+
# データベース設定
|
|
22
|
+
DATABASE_URL="encrypted:BFLDc6fRsdz0mfkrXWFk3p2ECSzyaTHea4IC3gSJ90uTaAPwc02JYnI5MMmj1iJFFyxgIs8gLrmINxl1dP2KYW/QnvgmqEl/cIRq1jwmFnRPLLU4Amv/AGGtmGyau9XICJgaWv3w2t8nAiPDgmZpz1cdeHXA563Qx0YJovzW3CJgWaga/sFerRUXyaQGLRy0+8r5uasBJAAWw4tn27ZlwIhsLLNVTC+kBz5EnVx+BeReEb0="
|
|
23
|
+
|
|
24
|
+
# アプリケーション設定
|
|
25
|
+
NODE_ENV=encrypted:BBJfTcYKXYjk8LsfO1qSdICzPMxhTHSg9aDFb+udaIFwAQxuIGMOrARuG2gPMv0+e8338j0NAdXdqbd2XWfD0XwYHWD3csBn7IT5aDdSZDduX23NHb6ONFSzsgUv3P9PKEBTRV4EXI4Dk0Y=
|
|
@@ -2,7 +2,6 @@ name: CI
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
-
branches: [main]
|
|
6
5
|
pull_request:
|
|
7
6
|
branches: [main]
|
|
8
7
|
|
|
@@ -50,3 +49,76 @@ jobs:
|
|
|
50
49
|
|
|
51
50
|
- name: Run tests
|
|
52
51
|
run: pnpm test
|
|
52
|
+
|
|
53
|
+
deploy-web:
|
|
54
|
+
needs: test
|
|
55
|
+
if: github.event_name == 'push'
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
env:
|
|
58
|
+
DOTENV_PRIVATE_KEY_CI: ${{ secrets.DOTENV_PRIVATE_KEY_CI }}
|
|
59
|
+
steps:
|
|
60
|
+
- name: Checkout code
|
|
61
|
+
uses: actions/checkout@v4
|
|
62
|
+
|
|
63
|
+
- name: Setup pnpm
|
|
64
|
+
uses: pnpm/action-setup@v4
|
|
65
|
+
with:
|
|
66
|
+
version: 10.14.0
|
|
67
|
+
|
|
68
|
+
- name: Setup Node.js
|
|
69
|
+
uses: actions/setup-node@v4
|
|
70
|
+
with:
|
|
71
|
+
node-version: '22.16.0'
|
|
72
|
+
cache: 'pnpm'
|
|
73
|
+
|
|
74
|
+
- name: Install dependencies
|
|
75
|
+
run: pnpm install --frozen-lockfile
|
|
76
|
+
|
|
77
|
+
- name: Install Vercel CLI
|
|
78
|
+
run: pnpm add -g vercel@latest
|
|
79
|
+
|
|
80
|
+
- name: Resolve deploy environment
|
|
81
|
+
id: deploy_env
|
|
82
|
+
run: |
|
|
83
|
+
BRANCH="${GITHUB_REF_NAME}"
|
|
84
|
+
if [ "$BRANCH" = "main" ]; then
|
|
85
|
+
echo "vercel_env=production" >> "$GITHUB_OUTPUT"
|
|
86
|
+
echo "dotenv_file=../../.env.production" >> "$GITHUB_OUTPUT"
|
|
87
|
+
echo "vercel_args=--prod" >> "$GITHUB_OUTPUT"
|
|
88
|
+
elif [ "$BRANCH" = "staging" ]; then
|
|
89
|
+
echo "vercel_env=preview" >> "$GITHUB_OUTPUT"
|
|
90
|
+
echo "dotenv_file=../../.env.staging" >> "$GITHUB_OUTPUT"
|
|
91
|
+
echo "vercel_args=" >> "$GITHUB_OUTPUT"
|
|
92
|
+
elif [ "$BRANCH" = "develop" ]; then
|
|
93
|
+
echo "vercel_env=preview" >> "$GITHUB_OUTPUT"
|
|
94
|
+
echo "dotenv_file=../../.env.development" >> "$GITHUB_OUTPUT"
|
|
95
|
+
echo "vercel_args=" >> "$GITHUB_OUTPUT"
|
|
96
|
+
else
|
|
97
|
+
echo "vercel_env=preview" >> "$GITHUB_OUTPUT"
|
|
98
|
+
echo "dotenv_file=../../.env.preview" >> "$GITHUB_OUTPUT"
|
|
99
|
+
echo "vercel_args=" >> "$GITHUB_OUTPUT"
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
- name: Pull Vercel Environment Information
|
|
103
|
+
run: |
|
|
104
|
+
npx dotenvx run -f ../../.env.ci -- \
|
|
105
|
+
vercel pull --yes --environment=${{ steps.deploy_env.outputs.vercel_env }}
|
|
106
|
+
working-directory: apps/web
|
|
107
|
+
|
|
108
|
+
- name: Build Project Artifacts
|
|
109
|
+
run: |
|
|
110
|
+
npx dotenvx run -f ../../.env.ci -f ${{ steps.deploy_env.outputs.dotenv_file }} -- \
|
|
111
|
+
vercel build ${{ steps.deploy_env.outputs.vercel_args }}
|
|
112
|
+
working-directory: apps/web
|
|
113
|
+
env:
|
|
114
|
+
DOTENV_PRIVATE_KEY_CI: ${{ secrets.DOTENV_PRIVATE_KEY_CI }}
|
|
115
|
+
DOTENV_PRIVATE_KEY_DEVELOPMENT: ${{ secrets.DOTENV_PRIVATE_KEY_DEVELOPMENT }}
|
|
116
|
+
DOTENV_PRIVATE_KEY_STAGING: ${{ secrets.DOTENV_PRIVATE_KEY_STAGING }}
|
|
117
|
+
DOTENV_PRIVATE_KEY_PREVIEW: ${{ secrets.DOTENV_PRIVATE_KEY_PREVIEW }}
|
|
118
|
+
DOTENV_PRIVATE_KEY_PRODUCTION: ${{ secrets.DOTENV_PRIVATE_KEY_PRODUCTION }}
|
|
119
|
+
|
|
120
|
+
- name: Deploy to Vercel
|
|
121
|
+
run: |
|
|
122
|
+
npx dotenvx run -f ../../.env.ci -- \
|
|
123
|
+
vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_args }}
|
|
124
|
+
working-directory: apps/web
|
|
@@ -46,6 +46,9 @@
|
|
|
46
46
|
- Day-to-day dev flow and checkpoints: `docs/einja/steering/development-workflow.md`.
|
|
47
47
|
- System overview and major boundaries: `docs/einja/steering/architecture.md`.
|
|
48
48
|
- Environment variable policy and storage: `docs/einja/steering/infrastructure/environment-variables.md`.
|
|
49
|
+
- Publishing guidance:
|
|
50
|
+
- `create-einja-app`: `packages/create-einja-app/RELEASING.md`.
|
|
51
|
+
- `dev-cli`: `packages/cli/RELEASING.md` and `packages/cli/docs/PUBLISHING.md`.
|
|
49
52
|
|
|
50
53
|
## Security & Configuration Tips
|
|
51
54
|
- Manage env files via `pnpm env:update`; encrypted secrets require `.env.keys`.
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { baseAuthOptions, mergeAuthOptions } from "{{packageName}}/front-core/auth";
|
|
2
2
|
import NextAuth from "next-auth";
|
|
3
3
|
|
|
4
|
+
if (!process.env.NEXTAUTH_URL && process.env.VERCEL_URL) {
|
|
5
|
+
// Preview deployments use branch-specific URLs on Vercel.
|
|
6
|
+
process.env.NEXTAUTH_URL = `https://${process.env.VERCEL_URL}`;
|
|
7
|
+
}
|
|
8
|
+
|
|
4
9
|
/**
|
|
5
10
|
* アプリ固有のNextAuth設定
|
|
6
11
|
* baseAuthOptionsを拡張してアプリ固有の設定を追加
|
|
@@ -25,6 +25,7 @@ const ENVIRONMENTS: EnvironmentConfig[] = [
|
|
|
25
25
|
{ name: "local", file: ".env.local", privateKeyEnv: "DOTENV_PRIVATE_KEY_LOCAL" },
|
|
26
26
|
{ name: "development", file: ".env.development", privateKeyEnv: "DOTENV_PRIVATE_KEY_DEVELOPMENT" },
|
|
27
27
|
{ name: "staging", file: ".env.staging", privateKeyEnv: "DOTENV_PRIVATE_KEY_STAGING" },
|
|
28
|
+
{ name: "preview", file: ".env.preview", privateKeyEnv: "DOTENV_PRIVATE_KEY_PREVIEW" },
|
|
28
29
|
{ name: "production", file: ".env.production", privateKeyEnv: "DOTENV_PRIVATE_KEY_PRODUCTION" },
|
|
29
30
|
{ name: "ci", file: ".env.ci", privateKeyEnv: "DOTENV_PRIVATE_KEY_CI" },
|
|
30
31
|
];
|
|
@@ -45,6 +45,12 @@ export const ENVIRONMENTS: EnvironmentConfig[] = [
|
|
|
45
45
|
privateKeyEnv: "DOTENV_PRIVATE_KEY_STAGING",
|
|
46
46
|
description: "ステージング環境",
|
|
47
47
|
},
|
|
48
|
+
{
|
|
49
|
+
name: "preview",
|
|
50
|
+
file: ".env.preview",
|
|
51
|
+
privateKeyEnv: "DOTENV_PRIVATE_KEY_PREVIEW",
|
|
52
|
+
description: "プレビュー環境",
|
|
53
|
+
},
|
|
48
54
|
{
|
|
49
55
|
name: "production",
|
|
50
56
|
file: ".env.production",
|