npm 패키지 사용
앱에서 원하는 npm 패키지를 설치해 사용할 수 있습니다. 로직 함수와 프런트 컴포넌트는 모두 esbuild로 번들되며, 모든 의존성이 출력물에 인라인됩니다 — 런타임에는node_modules가 필요하지 않습니다.
패키지 설치
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
번들링 동작 방식
빌드 단계에서는 esbuild를 사용하여 로직 함수와 프런트 컴포넌트마다 단일 자체 포함 파일을 생성합니다. 모든 임포트된 패키지는 번들에 인라인됩니다. 로직 함수는 Node.js 환경에서 실행됩니다. Node 기본 모듈(fs, path, crypto, http 등) 을(를) 사용할 수 있으며 설치할 필요가 없습니다.
프런트 컴포넌트는 Web Worker에서 실행됩니다. Node 기본 모듈은 사용할 수 없습니다 — 브라우저 환경에서 동작하는 브라우저 API와 npm 패키지만 사용할 수 있습니다.
두 환경 모두에서 twenty-client-sdk/core와 twenty-client-sdk/metadata가 사전 제공 모듈로 사용 가능합니다 — 이는 번들되지 않고 서버가 런타임에 해석합니다.
설정
스캐폴딩된 앱에는 이미 Vitest가 포함되어 있습니다. 수동으로 설정하는 경우, 의존성을 설치하세요:vitest.config.ts를 생성하세요:
vitest.config.ts
src/__tests__/setup-test.ts
프로그래매틱 SDK API
twenty-sdk/cli 서브 경로는 테스트 코드에서 직접 호출할 수 있는 함수를 내보냅니다:
| 함수 | 설명 |
|---|---|
appBuild | 앱을 빌드하고 필요하면 타르볼로 패키징 |
appDeploy | 타르볼을 서버로 업로드 |
appInstall | 활성 워크스페이스에 앱 설치 |
appUninstall | 활성 워크스페이스에서 앱 제거 |
success: boolean과 data 또는 error를 포함한 결과 객체를 반환합니다.
통합 테스트 작성
다음은 앱을 빌드, 배포, 설치한 후 워크스페이스에 표시되는지 검증하는 전체 예제입니다:src/__tests__/app-install.integration-test.ts
테스트 실행
로컬 Twenty 서버가 실행 중인지 확인한 다음, 다음을 실행하세요:타입 검사
테스트를 실행하지 않고도 앱에 대해 타입 검사를 수행할 수 있습니다:tsc --noEmit를 실행하고 모든 타입 오류를 보고합니다.
GitHub Actions로 CI
스캐폴더가.github/workflows/ci.yml에 바로 사용할 수 있는 GitHub Actions 워크플로를 생성합니다. main으로의 푸시와 풀 리퀘스트마다 통합 테스트를 자동으로 실행합니다.
워크플로:
- 코드를 체크아웃합니다
twentyhq/twenty/.github/actions/spawn-twenty-docker-image액션을 사용해 임시 Twenty 서버를 구동합니다yarn install --immutable로 종속성을 설치합니다- 액션 출력에서 주입된
TWENTY_API_URL및TWENTY_API_KEY로yarn test를 실행합니다
.github/workflows/ci.yml
spawn-twenty-docker-image 액션이 러너 내에서 일시적인 Twenty 서버를 직접 시작하고 연결 정보를 출력합니다. GITHUB_TOKEN 시크릿은 GitHub에서 자동으로 제공됩니다.
latest 대신 특정 Twenty 버전을 고정하려면 워크플로 상단의 TWENTY_VERSION 환경 변수를 변경하세요.