sh-ui-cli 0.61.0 → 0.61.1

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.
@@ -2,6 +2,19 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$description": "sh-ui 릴리즈 노트 단일 소스. docs(React)와 showcase(Flutter)가 함께 읽는다. 새 릴리즈마다 맨 앞에 추가.",
4
4
  "versions": [
5
+ {
6
+ "version": "0.61.1",
7
+ "date": "2026-05-07",
8
+ "title": "chore — 사용자 프로젝트 템플릿에서 Dockerfile 제거",
9
+ "type": "patch",
10
+ "highlights": [
11
+ "**`nextjs-app` / `nextjs-standalone` 템플릿의 `Dockerfile` 삭제** — sh-ui 가 1급 docker 지원이 아니고 그동안 emit 한 Dockerfile 도 검증 없이 multi-stage build 만 쓰여 있었음. 사용자가 docker 가 필요하면 자신의 배포 환경에 맞춰 직접 작성하는 게 정확.",
12
+ "**`generateApp` 의 Dockerfile EXPOSE/PORT 자동 갱신 로직 제거** — emit 안 하니 갱신할 대상도 없음.",
13
+ "**README 의 Docker 언급 정리** — 'Docker 지원' 항목과 구조 도해의 Dockerfile 라인 제거.",
14
+ "**`rename-app` 은 그대로 동작** — 사용자가 직접 Dockerfile 을 추가했을 때를 대비해 rename 패턴은 유지 (TEXT_BASENAMES 에 Dockerfile/Dockerfile.dev/Dockerfile.prod 그대로)."
15
+ ],
16
+ "url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.61.1"
17
+ },
5
18
  {
6
19
  "version": "0.61.0",
7
20
  "date": "2026-05-07",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh-ui-cli",
3
- "version": "0.61.0",
3
+ "version": "0.61.1",
4
4
  "description": "sh-ui CLI — 프로젝트 스캐폴드(create) + 컴포넌트 추가(add/list/remove) + IDE-내 AI용 MCP 서버",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -567,15 +567,6 @@ async function generateApp(targetDir, appName, port, plugins, arch, css = 'tailw
567
567
 
568
568
  await writeNextConfig(targetDir, plugins, { isMonorepo: true, appName, arch });
569
569
 
570
- // Update Dockerfile
571
- const dockerPath = path.join(targetDir, 'Dockerfile');
572
- if (await fs.pathExists(dockerPath)) {
573
- let dockerfile = await fs.readFile(dockerPath, 'utf-8');
574
- dockerfile = dockerfile.replace(/EXPOSE \d+/, `EXPOSE ${port}`);
575
- dockerfile = dockerfile.replace(/ENV PORT=\d+/, `ENV PORT=${port}`);
576
- await fs.writeFile(dockerPath, dockerfile);
577
- }
578
-
579
570
  // Create packages/ui/ui-apps/ui-{appName}/ from ui-app-template
580
571
  const monorepoRoot = path.resolve(targetDir, '..', '..');
581
572
  const uiPkgDir = path.join(monorepoRoot, 'packages', 'ui', 'ui-apps', `ui-${appName}`);
@@ -1,8 +1,8 @@
1
1
  // monorepo 의 앱 이름 (apps/<old>/ + packages/ui/ui-apps/ui-<old>/) 을 일괄 변경.
2
2
  //
3
- // 디렉토리 이동 + 정해진 6개 패턴 치환을 자동화. 사용자가 손으로
4
- // 6~10 군데 (package.json 이름, tsconfig paths, Dockerfile WORKDIR,
5
- // next.config transpilePackages, sh-ui.config aliases, README, ...) 를
3
+ // 디렉토리 이동 + 정해진 패턴 치환을 자동화. 사용자가 손으로
4
+ // 6~10 군데 (package.json 이름, tsconfig paths, next.config transpilePackages,
5
+ // sh-ui.config aliases, README, 필요 시 사용자가 추가한 Dockerfile WORKDIR ...) 를
6
6
  // 일일이 갈아엎지 않도록.
7
7
  //
8
8
  // false-positive 방지를 위해 bare 단어 (`web`) 는 절대 치환하지 않고,
@@ -14,7 +14,6 @@ UI 컴포넌트는 `@workspace/ui-{name}` 패키지를 참조하며, sh-ui 설
14
14
  - **next-themes** + **Sonner**
15
15
  - **Zod**
16
16
  - **Vitest** + **Testing Library**
17
- - **Docker** 지원
18
17
 
19
18
  ## 프로젝트 구조
20
19
 
@@ -37,7 +36,6 @@ UI 컴포넌트는 `@workspace/ui-{name}` 패키지를 참조하며, sh-ui 설
37
36
  ├── postcss.config.mjs # @workspace/ui-{name}/postcss.config 재사용
38
37
  ├── next.config.ts
39
38
  ├── vitest.config.ts
40
- ├── Dockerfile
41
39
  └── .env.example
42
40
  ```
43
41
 
@@ -1,42 +0,0 @@
1
- # Multi-stage Dockerfile for monorepo Next.js app (output: 'standalone')
2
- #
3
- # 빌드 시 monorepo 루트를 컨텍스트로 사용하세요:
4
- # docker build -f apps/app-name/Dockerfile -t app-name .
5
- #
6
- # Next.js 의 `output: 'standalone'` 옵션이 .next/standalone 안에 server.js
7
- # 와 최소 dependencies 만 추출합니다. 이 Dockerfile 은 그 산출물을 그대로
8
- # 복사해 final stage 의 이미지 크기를 100MB 이하로 유지합니다.
9
-
10
- # ── deps + build stage ────────────────────────────────────────────────
11
- FROM node:22-alpine AS builder
12
- WORKDIR /repo
13
-
14
- RUN corepack enable && corepack prepare pnpm@10.4.1 --activate
15
-
16
- # pnpm-lock 과 manifest 들만 먼저 복사 → 의존성 캐시 hit 률 최대화
17
- COPY pnpm-lock.yaml pnpm-workspace.yaml package.json turbo.json ./
18
- COPY apps/app-name/package.json ./apps/app-name/package.json
19
- COPY packages packages
20
-
21
- RUN pnpm install --frozen-lockfile
22
-
23
- # 소스 전체 복사 후 turbo build (workspace ^build 자동)
24
- COPY . .
25
- RUN pnpm turbo build --filter=app-name
26
-
27
- # ── runtime stage ─────────────────────────────────────────────────────
28
- FROM node:22-alpine AS runner
29
- WORKDIR /app
30
-
31
- ENV NODE_ENV=production
32
- ENV PORT=3000
33
- ENV HOSTNAME="0.0.0.0"
34
-
35
- # Next standalone 산출물 (server.js + node_modules + traced deps)
36
- COPY --from=builder /repo/apps/app-name/.next/standalone ./
37
- COPY --from=builder /repo/apps/app-name/.next/static ./apps/app-name/.next/static
38
- COPY --from=builder /repo/apps/app-name/public ./apps/app-name/public 2>/dev/null || true
39
-
40
- EXPOSE 3000
41
-
42
- CMD ["node", "apps/app-name/server.js"]
@@ -1,35 +0,0 @@
1
- # Multi-stage Dockerfile for standalone Next.js app
2
- #
3
- # 빌드:
4
- # docker build -t my-app .
5
- #
6
- # Next.js 가 `.next/standalone` 으로 server.js + 최소 dependencies 만 추출하도록
7
- # next.config.ts 에 `output: 'standalone'` 을 추가하세요.
8
-
9
- FROM node:22-alpine AS builder
10
- WORKDIR /app
11
-
12
- RUN corepack enable && corepack prepare pnpm@10.4.1 --activate
13
-
14
- COPY pnpm-lock.yaml package.json ./
15
- RUN pnpm install --frozen-lockfile
16
-
17
- COPY . .
18
- RUN pnpm build
19
-
20
- FROM node:22-alpine AS runner
21
- WORKDIR /app
22
-
23
- ENV NODE_ENV=production
24
- ENV PORT=3000
25
- ENV HOSTNAME="0.0.0.0"
26
-
27
- # `output: 'standalone'` 이 활성일 때 server.js + 추적된 deps 가 .next/standalone 에 생성됨.
28
- # 옵션 비활성 시엔 .next/ 전체를 복사하고 `next start` 로 실행해야 합니다.
29
- COPY --from=builder /app/.next/standalone ./
30
- COPY --from=builder /app/.next/static ./.next/static
31
- COPY --from=builder /app/public ./public 2>/dev/null || true
32
-
33
- EXPOSE 3000
34
-
35
- CMD ["node", "server.js"]