uni-app CLI 빌드 환경 구성 가이드

uni-app 프로젝트를 HBuilderX에서 CLI 방식으로 전환하면 자동화된 빌드 파이프라인 구축이 가능하며, CI/CD 환경과의 통합도 원활해집니다. 기존 HBuilderX는 개발 편의성을 위해 병행 사용할 수 있습니다.

1. 소스 디렉토리 재구성

프로젝트 루트에 src 폴더를 생성하고 모든 애플리케이션 소스코드를 해당 위치로 이동합니다.

2. 진입점 HTML 파일 생성

루트 경로에 index.html 파일을 작성합니다:

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <script>
      const supportsSafeArea = typeof CSS !== 'undefined' && 
        CSS.supports && 
        (CSS.supports('top: env(safe-area-inset-top)') || 
         CSS.supports('top: constant(safe-area-inset-top)'));
      
      const viewportContent = 'width=device-width, initial-scale=1.0, ' +
        'maximum-scale=1.0, minimum-scale=1.0, user-scalable=no' +
        (supportsSafeArea ? ', viewport-fit=cover' : '');
      
      document.write(`<meta name="viewport" content="${viewportContent}" />`);
    </script>
    <title></title>
  </head>
  <body>
    <div id="root"><!--ssr-outlet--></div>
    <script type="module" src="/src/entry.js"></script>
  </body>
</html>

3. 패키지 매니저 설정

package.json 파일을 생성하여 의존성과 스크립트를 정의합니다:

{
  "name": "my-uniapp-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "serve:h5": "uni",
    "serve:h5:ssr": "uni --ssr",
    "serve:wx": "uni -p mp-weixin",
    "serve:alipay": "uni -p mp-alipay",
    "serve:baidu": "uni -p mp-baidu",
    "serve:tt": "uni -p mp-toutiao",
    "serve:qq": "uni -p mp-qq",
    "serve:jd": "uni -p mp-jd",
    "serve:ks": "uni -p mp-kuaishou",
    "serve:lark": "uni -p mp-lark",
    "serve:app": "uni -p app",
    "serve:android": "uni -p app-android",
    "serve:ios": "uni -p app-ios",
    "serve:quickapp": "uni -p quickapp-webview",
    "serve:quickapp-hw": "uni -p quickapp-webview-huawei",
    "serve:quickapp-union": "uni -p quickapp-webview-union",
    "build:h5": "uni build",
    "build:h5:ssr": "uni build --ssr",
    "build:wx": "uni build -p mp-weixin",
    "build:alipay": "uni build -p mp-alipay",
    "build:baidu": "uni build -p mp-baidu",
    "build:tt": "uni build -p mp-toutiao",
    "build:qq": "uni build -p mp-qq",
    "build:jd": "uni build -p mp-jd",
    "build:ks": "uni build -p mp-kuaishou",
    "build:lark": "uni build -p mp-lark",
    "build:app": "uni build -p app",
    "build:android": "uni build -p app-android",
    "build:ios": "uni build -p app-ios",
    "build:quickapp": "uni build -p quickapp-webview",
    "build:quickapp-hw": "uni build -p quickapp-webview-huawei",
    "build:quickapp-union": "uni build -p quickapp-webview-union"
  },
  "dependencies": {
    "@dcloudio/uni-app": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-app-plus": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-components": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-h5": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-jd": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-lark": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-qq": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3080720230703001",
    "vue": "^3.3.4",
    "vue-i18n": "^9.2.2"
  },
  "devDependencies": {
    "@dcloudio/types": "^3.3.3",
    "@dcloudio/uni-automator": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-cli-shared": "3.0.0-alpha-3080720230703001",
    "@dcloudio/uni-stacktracey": "3.0.0-alpha-3080720230703001",
    "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3080720230703001",
    "sass": "^1.62.1",
    "vite": "^4.3.9"
  }
}

4. 드 도구 설정

vite.config.js 파일을 생성하여 Vite 플러그인을 구성합니다:

import { defineConfig } from 'vite'
import uniPlugin from '@dcloudio/vite-plugin-uni'

export default defineConfig({
  plugins: [
    uniPlugin(),
  ],
  build: {
    sourcemap: true,
  },
})

5. TypeScript 지원 설정

IDE 자동완성 및 타입 검사를 위한 jsconfig.json 파일을 작성합니다:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    },
    "types": [
      "@dcloudio/types",
      "miniprogram-api-typings"
    ],
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "node"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

6. 의존성 설치

터미널에서 프로젝트 루트로 이동 후 패키지를 설치합니다:

npm install

7. 플랫폼별 빌드 실행

설정된 스크립트를 활용하여 원하는 플랫폼용 산출물을 생성합니다.

H5 웹 애플리케이션

npm run build:h5

결과물 위치: dist/build/h5

하이브리드 앱 (Android/iOS)

npm run build:app

결과물 위치: dist/build/app

위챗 미니프로그램

npm run build:wx

결과물 위치: dist/build/mp-weixin

알리페이 미니프로그램

npm run build:alipay

결과물 위치: dist/build/mp-alipay

태그: uni-app Vite Vue.js cli CI/CD

6월 1일 16:41에 게시됨