프로젝트 마이그레이션과 프레임워크 업그레이드
Vue 2→3, Express→Fastify, Webpack→Vite — OpenClaw가 평탄하게 마이그레이션해주니까 손으로 함정 밟을 필욘 없다
마이그레이션, 겪어본 사람만 안다
프레임워크 업그레이드 하나, 함정 백 개
Vue 2를 Vue 3로 업그레이드해야 한다. 마이그레이션 가이드를 열어보니 200쪽이 넘는다. Options API를 Composition API로 바꿔야 하고, Vuex는 Pinia로 교체해야 하고, Vue Router 문법도 달라졌다 — 알았다. 시작해.
다 고치고 보니 써드파티 컴포넌트 라이브러리가 호환되지 않는다. 새 라이브러리로 바꿨더니 스타일이 전부 망가졌다. 스타일을 고쳐놓고 테스트를 돌렸더니 절반이 빨간색이다. 이건 프론트엔드만이고, 백엔드의 Python 2를 3으로 바꾸는 것도 대기 중이다…
제일 비참한 건 상사가 묻는 거다. "이 주에 끝낼 수 있어?"
OpenClaw: 먼저 차이를 분석하고, 차근차근 마이그레이션해
옛 프로젝트를 OpenClaw에 던지면, 이렇게 할 수 있어:
1. 모든 파일을 스캔하고, 바꿔야 할 부분 목록 작성
2. 우선순위 정렬: 먼저 파괴적인 변경사항, 그다음 더 이상 사용 안 하는 API
3. 파일별로 변경된 코드 생성, 각 변경사항에 대한 설명 포함
4. 호환되지 않는 써드파티 의존성 표시, 대체 방안 제시
마이그레이션 가이드를 페이지씩 읽을 필요가 없다. OpenClaw가 이미 읽었고, 너의 프로젝트에서 정확히 어디를 바꿔야 하는지 안다.
3가지 마이그레이션 프롬프트, 주류 시나리오 커버
프론트엔드 프레임워크, 백엔드 프레임워크, 빌드 도구, 각각 하나씩.
Vue 2 → Vue 3 Composition API 마이그레이션
황금 지시문
Vue 2 프로젝트를 Vue 3으로 업그레이드하게, 요구사항:
1. 모든 Options API 컴포넌트를 Composition API(script setup 문법)로 재작성
2. Vuex 상태 관리를 Pinia로 마이그레이션
3. Vue Router 3을 Vue Router 4로 업그레이드 (라우터 가드 문법 변경 주의)
4. $listeners, $attrs, filter 등 제거된 API 처리
5. Element UI → Element Plus (또는 다른 컴포넌트 라이브러리) 호환성 확인
파일별로 수정 내용 출력하고, 각 변경사항마다 이유 설명해.
마지막에 손으로 확인해야 하는 써드파티 의존성 호환성 문제 나열해.
Vue 2 → 3는 가장 흔한 프론트엔드 마이그레이션 시나리오다. Claude Opus 4.6 쓰는 걸 추천하는데, Vue 생태계를 더 정확하게 이해하거든. 큰 프로젝트면 모듈별로 나눠서 마이그레이션하는 게 효율적이다.
Express.js → Fastify 마이그레이션
고급 팁
Express.js 앱을 Fastify 프레임워크로 마이그레이션하게:
1. 라우팅 마이그레이션: Express의 라우터를 Fastify 라우팅 등록 방식으로 변경
2. 미들웨어 마이그레이션:
- body-parser → Fastify 내장
- cors → @fastify/cors
- helmet → @fastify/helmet
- 커스텀 미들웨어 → Fastify hooks (onRequest / preHandler)
3. 에러 처리: Express의 error middleware → Fastify setErrorHandler
4. 요청/응답 객체: req.body / res.json 등 API 차이 처리
5. 검증: joi / express-validator → Fastify 내장 JSON Schema 검증
기존 API 인터페이스는 그대로 유지하고, 프론트엔드가 신경 쓸 필요 없도록 해.
Express → Fastify 성능 향상이 명확하다 (보통 2~3배). 그런데 미들웨어 마이그레이션이 핵심이다. 이 프롬프트가 가장 자주 쓰는 미들웨어 대응 관계를 다 다룬다.
Webpack → Vite 마이그레이션
초보자 친화
Webpack 프로젝트를 Vite로 마이그레이션하게:
1. vite.config.ts 생성, 기존 webpack.config.js 설정에 대응
2. 다음 흔한 차이점들 처리:
- require() → import
- process.env → import.meta.env
- CSS modules / SCSS 설정
- 별칭(alias) 설정
- 프록시(proxy) 설정
3. 호환되지 않는 Webpack 로더 확인, Vite 플러그인 대체 제안
4. package.json scripts 업데이트
5. CommonJS 의존성 호환성 문제 처리
마이그레이션된 설정 파일과 수정 필요한 소스 파일 목록 줘.
Webpack → Vite 마이그레이션은 상대적으로 쉬운 편이다. 주로 설정 마이그레이션이거든. "초보자 친화"로 표시한 이유는 대부분의 변경사항이 기계적이라 AI가 잘 처리하거든.
마이그레이션 전 준비 설정
OpenClaw가 마이그레이션을 도와주기 전에, 프로젝트 정보를 미리 정렬해두면 좋다.
프로젝트 마이그레이션 컨텍스트 템플릿
# 프로젝트 마이그레이션 정보
## 현재 기술 스택
- 프레임워크: Vue 2.7 + Vuex 3 + Vue Router 3
- 빌드 도구: Webpack 4
- UI 컴포넌트 라이브러리: Element UI 2.x
- Node 버전: 16.x
## 목표 기술 스택
- 프레임워크: Vue 3.4 + Pinia + Vue Router 4
- 빌드 도구: Vite 5
- UI 컴포넌트 라이브러리: Element Plus 2.x
- Node 버전: 20.x
## 프로젝트 규모
- 컴포넌트 수: ~80개
- 페이지 수: ~30개
- 커스텀 지시문: 5개
- 커스텀 필터: 8개
## 알려진 문제
- xxx 컴포넌트 라이브러리는 아직 Vue 3 버전 없음
- 일부 코드가 this.$refs를 써서 DOM 직접 조작
OpenClaw 마이그레이션 vs 손으로 마이그레이션
OpenClaw 보조 마이그레이션
- 바꿔야 할 모든 부분을 자동으로 스캔해서, 빠뜨리는 게 없다
- 파일별로 수정된 코드를 생성해줘, 복사해서 붙여넣으면 된다
- 각 변경사항의 이유를 설명해줘서, 마이그레이션 문서가 자체로 생긴다
- 호환되지 않는 써드파티 라이브러리가 있으면 미리 경고하고 대체 제안을 해줘
- 큰 프로젝트는 며칠이면 끝나고, 작은 프로젝트는 몇 시간이면 된다
VS
순수 손 마이그레이션
- 공식 마이그레이션 가이드를 전부 읽어야 한다 (보통 수백 페이지)
- 파일별로 직접 찾아서 수정해야 하니까, 빠뜨리기 쉽다
- 문제가 생기면 Google과 Stack Overflow에만 의존해야 한다
- 써드파티 라이브러리 호환성 문제는 실행해봐야만 알 수 있다
- 큰 프로젝트는 몇 주를 들여야 하고, 중간에 온갖 예상 밖의 문제가 생긴다
마이그레이션 꿀팁
큰 프로젝트는 절대 한 번에 다 바꾸지 말자. 모듈별로 나눠서 마이그레이션하고, 각 배치가 끝나면 테스트를 한 번 돌려서 문제 없는 걸 확인한 후에 다음 배치로 넘어가자.
마이그레이션하기 전에 먼저 테스트 커버리지가 충분한지 꼭 확인해. 기존 테스트가 부족하면 마이그레이션 전에 OpenClaw가 테스트를 보충하게 하고, 그다음에 마이그레이션을 시작해 — 순서가 중요하다.