create-einja-app 0.2.12 → 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 CHANGED
@@ -9,7 +9,7 @@ Einja Management Templateを使用したプロジェクトを素早く作成す
9
9
  ### 主な機能
10
10
 
11
11
  - 🚀 **新規プロジェクト作成**: `npx create-einja-app my-project` で即座にプロジェクトを作成
12
- - 🛠️ **既存プロジェクトセットアップ**: `--setup` オプションで既存プロジェクトにツールを追加
12
+ - 🛠️ **既存プロジェクトセットアップ**: `setup` サブコマンドで既存プロジェクトにツールを追加
13
13
  - 🔧 **環境ツール統合**: direnv, dotenvx, Volta, Biome, Huskyなどのツールを自動セットアップ
14
14
  - 🔐 **認証方式選択**: NextAuth.js を使用するか選択可能
15
15
  - 🔄 **対話式プロンプト**: わかりやすいプロンプトで設定を選択
@@ -31,7 +31,7 @@ npx create-einja-app my-project
31
31
  - プロジェクト名
32
32
  - パッケージスコープ
33
33
  - 認証機能(NextAuth.js を使用 / なし)
34
- - @einja/cli自動セットアップ
34
+ - @einja/dev-cli自動セットアップ
35
35
  - Worktree設定カスタマイズ
36
36
 
37
37
  #### オプション付き実行
@@ -50,7 +50,7 @@ npx create-einja-app my-project --skip-install
50
50
  ```bash
51
51
  # 現在のディレクトリにツールを追加
52
52
  cd existing-project
53
- npx create-einja-app --setup
53
+ npx create-einja-app setup
54
54
  ```
55
55
 
56
56
  対話式プロンプトが表示され、以下を選択できます:
@@ -83,7 +83,7 @@ npx create-einja-app --setup
83
83
  npx create-einja-app my-project --skip-git
84
84
  ```
85
85
 
86
- ### `create-einja-app --setup`
86
+ ### `create-einja-app setup`
87
87
 
88
88
  既存プロジェクトにツールを追加します。
89
89
 
@@ -91,7 +91,7 @@ npx create-einja-app my-project --skip-git
91
91
 
92
92
  ```bash
93
93
  cd existing-project
94
- npx create-einja-app --setup
94
+ npx create-einja-app setup
95
95
  ```
96
96
 
97
97
  ### `create-einja-app add [options]`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-einja-app",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "CLI tool to create new projects with Einja Management Template",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,11 +15,18 @@ DOTENV_PUBLIC_KEY_CI="02c888edf6b766c5a9781ab2966c142b5f401e9a9d534aab37d6c0fa5c
15
15
  # ============================================
16
16
 
17
17
  # NextAuth設定
18
- NEXTAUTH_SECRET=encrypted:BDqRRvYcNnJ5rYo4c8Zhu/lThghcW8b6+7u4+MeaJNlkDWHlWeXwVkMf4NJ61mXSCWckIfyg6CrGsgbt78qJ18mEvf2yBmQr1TZxi+byzT34thNOoks8NCE7YudmVaLv7UCZyncLltOl3ida24BxVKv0TA==
19
- NEXTAUTH_URL=encrypted:BIsPWaPuZKcIShhWg/mkQ4hAIb5XfJxHq8434VrnPEpqnJMeV9PDvUFd/Ra1sg99z6/dpK49jPCLBjK/Uz0t9AKXUMWNd3f2LgoAViktW/0z8WDRhv7vmSt3TA8vwCWBo09NNweIQovudjbR96xJREShBBIKYA==
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:BBCXNkJ8IKIWFGCSg/QG1xwAI0NdhSAiOL96KreYtcRPeySngZecHQpHm8LUF3/MvjnyjJMcSBzfiPtDbiaUl4dXxOE8l4z0t+96IfgzOIsXxqy/eQW0qZ3YcZq4L3ioz4+D/jfLPX0BdQ9dh5KLB1KgoT0lydCo4v1jAmQ6Fs/RNQmp42XyKp6o4lNoxQN+BAnmBfASxVzirjLgJ7/JzsFaXRQx6Mo="
22
+ DATABASE_URL="encrypted:BGQiR+EvdBFF0QXCwpexpZX0orPNntDQAUc37se1ZLzalhQrKcAvOZMhtFwGN0CAL21rzLHxmMN7ndiTDfHy9a8hr+Gpgk2sar1miUp+CI5l3VKQFOzgcCIe9uGoHIYU/p5yYSh9ROL6HBhCTCPlqe5Jyz+md9nkNhApqyedHmdmK5Vr5yC5cmEWltG2Krj/WBDw4hAkIST+Vzh355ZS3QT5oBVr53c="
23
23
 
24
24
  # アプリケーション設定
25
- NODE_ENV=encrypted:BGqfAinM4i1q4jyFHGgDieBnatHXGHLbMsC16tSgMdHLCrnPSsdCS3xddycesRH/jQYR2+pbyAstYbhhL87dDiTXcr66/5QHSVkCSZYzf3Ud/abIT82GqXuvgiLDvlum9YhFNEw=
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",