--- title: target --- `target` 옵션은 컴파일러가 어떤 React 버전을 위한 코드를 생성해야 하는지 지정합니다. ```js { target: '19' // or '18', '17' } ``` --- ## 레퍼런스 {/*reference*/} ### `target` {/*target*/} 컴파일된 출력의 React 버전 호환성을 설정합니다. #### 타입 {/*type*/} ``` '17' | '18' | '19' ``` #### 기본값 {/*default-value*/} `'19'` #### 유효한 값 {/*valid-values*/} - **`'19'`**: React 19를 대상으로 합니다 (기본값). 추가 런타임이 필요하지 않습니다. - **`'18'`**: React 18을 대상으로 합니다. `react-compiler-runtime` 패키지가 필요합니다. - **`'17'`**: React 17을 대상으로 합니다. `react-compiler-runtime` 패키지가 필요합니다. #### 주의 사항 {/*caveats*/} - 숫자가 아닌 문자열 값을 사용하세요. (예: `17`이 아닌 `'17'`) - 패치 버전은 포함하지 마세요. (예: `'18.2.0'`이 아닌 `'18'`을 사용) - React 19는 컴파일러 런타임 API가 내장되어 있습니다. - React 17과 18은 `react-compiler-runtime@latest` 설치가 필요합니다. --- ## 사용법 {/*usage*/} ### React 19 대상으로 하기 (기본값) {/*targeting-react-19*/} React 19의 경우 특별한 설정이 필요하지 않습니다. ```js { // defaults to target: '19' } ``` 컴파일러는 React 19의 내장 런타임 API를 사용합니다. ```js // 컴파일된 출력은 React 19의 네이티브 API를 사용합니다. import { c as _c } from 'react/compiler-runtime'; ``` ### React 17 또는 18 대상으로 하기 {/*targeting-react-17-or-18*/} React 17과 React 18 프로젝트의 경우 두 단계가 필요합니다. 1. 런타임 패키지를 설치합니다. ```bash npm install react-compiler-runtime@latest ``` 2. `target`을 설정합니다. ```js // For React 18 { target: '18' } // For React 17 { target: '17' } ``` 컴파일러는 두 버전 모두에 대해 폴리필 런타임을 사용합니다. ```js // 컴파일된 출력은 폴리필을 사용합니다. import { c as _c } from 'react-compiler-runtime'; ``` --- ## 문제 해결 {/*troubleshooting*/} ### 컴파일러 런타임 누락에 관한 런타임 오류 {/*missing-runtime*/} "Cannot find module 'react/compiler-runtime'"와 같은 오류가 표시되는 경우에는 다음과 같이 합니다. 1. React 버전을 확인합니다. ```bash npm why react ``` 2. React 17 또는 18을 사용하는 경우 런타임을 설치합니다. ```bash npm install react-compiler-runtime@latest ``` 3. `target`이 React 버전과 일치하는지 확인합니다. ```js { target: '18' // React 메이저 버전과 일치해야 합니다 } ``` ### 런타임 패키지가 작동하지 않는 경우 {/*runtime-not-working*/} 런타임 패키지가 다음 조건을 만족하는지 확인하세요. 1. 프로젝트에 설치되어 있어야 합니다. (전역이 아닌) 2. `package.json`의 `dependencies`에 나열되어 있어야 합니다. 3. 올바른 버전이어야 합니다. (`@latest` 태그) 4. `devDependencies`에 있으면 안 됩니다. (런타임에 필요합니다) ### 컴파일된 출력 확인하기 {/*checking-output*/} 올바른 런타임이 사용되고 있는지 확인하려면 서로 다른 import를 주목하세요. (내장의 경우 `react/compiler-runtime`, 17/18용 독립 패키지의 경우 `react-compiler-runtime`) ```js // React 19용 (내장 런타임) import { c } from 'react/compiler-runtime' // ^ // React 17/18용 (폴리필 런타임) import { c } from 'react-compiler-runtime' // ^ ```