byuckchon-frontend-cli 1.4.0 → 1.4.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.
package/README.md CHANGED
@@ -10,11 +10,47 @@ React(Vite) / Next.js(App Router) TypeScript 프로젝트를 만들고, `bc chat
10
10
 
11
11
  ## 설치
12
12
 
13
+ `bc` 는 **CLI 툴** 이라서 프로젝트 의존성으로 설치하면 안 되고, **글로벌**(또는 `npx`)로 써야 합니다.
14
+
13
15
  ```bash
16
+ # 글로벌 설치 (제일 흔한 방식)
14
17
  npm install -g byuckchon-frontend-cli
15
- # 짧은 alias 도 동시에 설치됨: `bc`
18
+ pnpm add -g byuckchon-frontend-cli
19
+ yarn global add byuckchon-frontend-cli
20
+
21
+ # 또는 설치 없이 일회성
22
+ npx byuckchon-frontend-cli adopt
23
+ pnpm dlx byuckchon-frontend-cli adopt
24
+ ```
25
+
26
+ 설치되면 `bc` / `byuckchon-frontend-cli` 두 개 다 PATH 에 깔립니다.
27
+
28
+ ### 모노레포에서 쓰기
29
+
30
+ `bc` 자체는 **루트에 한 번만** 글로벌 설치하면 충분합니다. 다만 `bc.config.json` 은
31
+ **각 패키지(앱) 디렉터리마다 따로** 두는 걸 권장 — Tailwind 버전, 라우팅, 스타일링이
32
+ 앱마다 다르면 `detected.*` 가 달라야 RAG 컨텍스트도 정확해집니다.
33
+
34
+ ```bash
35
+ # 루트에서 한 번만
36
+ npm i -g byuckchon-frontend-cli
37
+
38
+ # 각 앱마다 따로 셋업
39
+ cd apps/web && bc adopt # apps/web/bc.config.json 생성
40
+ cd apps/mobile && bc adopt # apps/mobile/bc.config.json 생성
41
+
42
+ # 일할 땐 그 앱 디렉토리에서 실행
43
+ cd apps/web && bc # apps/web/bc.config.json 을 자동으로 읽어감
16
44
  ```
17
45
 
46
+ `bc` 는 실행 디렉토리에서 위로 거슬러 올라가며 가장 가까운 `bc.config.json` 을 찾습니다.
47
+ 즉 모노레포 루트에 `bc.config.json` 이 없고 `apps/web/bc.config.json` 만 있으면,
48
+ `apps/web/somewhere/deeper/...` 에서 `bc` 를 쳐도 `apps/web/bc.config.json` 이 잡힙니다.
49
+
50
+ > 만약 `pnpm add byuckchon-frontend-cli` (글로벌 플래그 없이) 한 상태에서 `bc` 가
51
+ > 안 먹는다면, 이건 패키지 의존성으로 박혀서 그래요. `pnpm remove byuckchon-frontend-cli`
52
+ > 후 위처럼 `pnpm add -g` 로 다시 설치해주세요.
53
+
18
54
  ## 명령
19
55
 
20
56
  ### `bc init` — 새 프로젝트 만들기
@@ -196,6 +232,7 @@ bc config set-gateway # 게이트웨이 해제 (BYOK 모
196
232
  - [x] Phase 3a: 코드베이스 RAG (`bc index`, `/rag` 토글, 자동 컨텍스트 주입)
197
233
  - [x] Phase 3b: `bc gen api-types` (OpenAPI → TS 타입), `/paste` 클립보드 이미지, 한글 IME 수정
198
234
  - [x] Phase 3c-1: chat 시작 시 인덱스 자동 빌드, OpenAPI 자동 fetch+캐시+시스템 프롬프트 주입
235
+ - [x] v1.4.1 — `deepMerge(null, obj)` TypeError 수정 (`bc adopt` 한 프로젝트에서 모든 명령이 터지던 버그)
199
236
  - [ ] Phase 3c-2: Figma 실 fetch (URL → 노드 트리 → 컴포넌트 인텐트)
200
237
  - [ ] Phase 4: `bc gen component/page` (AST 편집 + 검증 루프), `/apply` diff 미리보기
201
238
 
package/bin/index.js CHANGED
@@ -27,7 +27,7 @@ const program = new Command();
27
27
  program
28
28
  .name('bc')
29
29
  .description('Byuckchon Frontend Workbench — 프로젝트 스타터 + AI 어시스턴트')
30
- .version('1.4.0');
30
+ .version('1.4.1');
31
31
 
32
32
  program
33
33
  .command('init')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "byuckchon-frontend-cli",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Byuckchon Frontend Workbench — project starter + AI chat + codebase RAG + OpenAPI codegen",
5
5
  "type": "module",
6
6
  "engines": {
@@ -78,6 +78,9 @@ async function writeJson(file, data) {
78
78
 
79
79
  function deepMerge(base, patch) {
80
80
  if (patch == null) return base;
81
+ // 한쪽이 null/원시값이거나, 한쪽만 배열이면 patch 가 우선.
82
+ // 특히 base 가 null 인데 patch 가 객체일 때 `k in base` 가 TypeError 던지는 걸 방지.
83
+ if (base == null) return patch;
81
84
  if (typeof base !== 'object' || typeof patch !== 'object') return patch;
82
85
  if (Array.isArray(base) || Array.isArray(patch)) return patch;
83
86
  const out = { ...base };