구성 참조
다음 참조는 Astro에서 지원되는 모든 구성 옵션을 다룹니다. Astro 구성에 대해 자세히 알아보려면 Astro 구성 안내서를 읽어보세요.
최상위 옵션
섹션 제목: 최상위 옵션site
섹션 제목: site타입: string
배포된 최종 URL입니다. Astro는 이 전체 URL을 사용하여 최종 빌드에서 사이트맵과 표준 URL을 생성합니다. Astro를 최대한 활용하려면 이 구성을 설정하는 것이 좋습니다.
base
섹션 제목: base타입: string
배포할 기본 경로입니다. Astro는 개발 및 프로덕션 빌드 모두에서 이 경로를 페이지 및 자산의 루트로 사용합니다.
아래 예에서 astro dev
는 /docs
에서 서버를 시작합니다.
이 옵션을 사용할 때 모든 정적 자산 가져오기 및 URL은 base를 접두사로 추가해야 합니다. import.meta.env.BASE_URL
을 통해 이 값에 액세스할 수 있습니다.
import.meta.env.BASE_URL
의 값은 base
에 어떤 값을 설정했는지에 관계없이 trailingSlash
구성에 의해 결정됩니다.
trailingSlash: "always"
가 설정된 경우 후행 슬래시가 항상 포함됩니다. trailingSlash: "never"
가 설정된 경우 base
에 슬래시가 포함되어 있더라도 BASE_URL
에는 후행 슬래시가 포함되지 않습니다.
또한 Astro는 통합에 사용할 수 있도록 하기 전에 config.base
의 구성된 값을 내부적으로 조작합니다. 통합에서 읽은 config.base
값도 동일한 방식으로 trailingSlash
구성에 따라 결정됩니다.
아래 예시에서, import.meta.env.BASE_URL
및 config.base
값은 모두 /docs
가 됩니다.
아래 예시에서 import.meta.env.BASE_URL
및 config.base
값은 모두 /docs/
가 됩니다.
trailingSlash
섹션 제목: trailingSlash타입: 'always' | 'never' | 'ignore'
기본값: 'ignore'
개발 서버의 경로 일치 동작을 설정합니다. 다음 옵션 중에서 선택하세요.
'always'
- 후행 슬래시가 포함된 URL만 일치시킵니다. (예: “/foo/“)'never'
- 후행 슬래시가 포함된 URL은 절대 일치시키지 않습니다. (예: “/foo”)'ignore'
- 후행 ”/” 존재 여부에 관계없이 URL을 일치시킵니다.
프로덕션 호스트에서 후행 슬래시 작동 여부를 엄격하게 처리하는 경우 이 구성 옵션을 사용하세요.
또한 개발 중에 슬래시가 있거나 없는 URL이 작동하지 않도록 더 엄격하게 설정하려는 경우 이를 설정할 수도 있습니다.
참고하기:
- build.format
redirects
섹션 제목: redirects타입: Record.<string, RedirectConfig>
기본값: {}
astro@2.9.0
키는 일치시킬 경로이고 값은 리디렉션할 경로인 리디렉션 매핑을 지정합니다.
정적 경로와 동적 경로를 모두 리디렉션할 수 있지만 동일한 종류의 경로로만 리디렉션할 수 있습니다.
예를 들어 '/article': '/blog/[...slug]'
리디렉션을 사용할 수 없습니다.
어댑터가 설치되지 않은 정적으로 생성된 사이트의 경우 <meta http-equiv="refresh">
태그를 사용하여 클라이언트 리디렉션을 생성하며 상태 코드는 지원하지 않습니다.
output: static
모드에서 SSR을 사용하거나 정적 어댑터를 사용하는 경우 상태 코드가 지원됩니다.
Astro는 301
상태로 리디렉션된 GET 요청을 처리하고 다른 요청 방법에는 308
상태를 사용합니다.
리디렉션 구성의 객체를 사용하여 리디렉션 상태 코드를 맞춤설정할 수 있습니다.
output
섹션 제목: output타입: 'static' | 'server' | 'hybrid'
기본값: 'static'
빌드의 출력 대상을 지정합니다.
'static'
- 모든 정적 호스트에 배포될 정적 사이트를 구축합니다.'server'
- SSR (서버 측 렌더링)을 지원하는 호스트에 배포할 앱을 구축합니다.'hybrid'
- 몇 개의 서버 측 렌더링 페이지가 포함된 정적 사이트를 구축합니다.
참고하기:
- adapter
adapter
섹션 제목: adapter타입: AstroIntegration
빌드 어댑터를 사용하여 선호하는 서버, 서버리스, 에지 호스트에 배포하세요. Astro SSR을 사용하려면 Netlify, Vercel 등을 위한 자사 어댑터 중 하나를 가져오세요.
SSR에 대한 자세한 내용은 서버 측 렌더링 안내서를 참조하고, 전체 호스트 목록은 배포 안내서를 참조하세요.
참고하기:
- output
integrations
섹션 제목: integrations맞춤형 통합으로 Astro를 확장하세요. 통합은 프레임워크 지원 (Solid.js 등), 새로운 기능 (사이트맵 등), 새 라이브러리(Partytown 등)를 한번에 추가하는 것을 도와줍니다.
Astro 통합을 시작하는 데 도움이 필요하면 통합 안내서를 읽어보세요.
root
섹션 제목: root타입: string
CLI: --root
기본값: "."
(현재 작업 디렉터리)
프로젝트 루트 디렉터리가 아닌 디렉터리에서 astro
CLI 명령을 실행하는 경우에만 이 옵션을 제공해야 합니다. 일반적으로 이 옵션은 Astro 구성 파일 대신 CLI를 통해 제공됩니다. Astro가 구성 파일을 찾으려면 먼저 프로젝트 루트를 알아야 하기 때문입니다.
상대 경로를 제공하는 경우 (예: --root: './my-project'
) Astro는 현재 작업 디렉터리를 기준으로 경로를 확인합니다.
srcDir
섹션 제목: srcDir타입: string
기본값: "./src"
Astro가 여러분의 사이트를 읽을 디렉터리를 설정하세요.
값은 절대 파일 시스템 경로이거나 프로젝트 루트에 대한 상대 경로일 수 있습니다.
publicDir
섹션 제목: publicDir타입: string
기본값: "./public"
정적 자산의 디렉터리를 설정합니다. 이 디렉터리의 파일은 개발 중에 /
에 제공되고 빌드 중에 build 디렉터리에 복사됩니다. 이러한 파일은 변환이나 번들링 없이 항상 있는 그대로 제공되거나 복사됩니다.
값은 절대 파일 시스템 경로이거나 프로젝트 루트에 대한 상대 경로일 수 있습니다.
outDir
섹션 제목: outDir타입: string
기본값: "./dist"
astro build
가 최종 빌드를 작성하는 디렉터리를 설정합니다.
값은 절대 파일 시스템 경로이거나 프로젝트 루트에 대한 상대 경로일 수 있습니다.
참고하기:
- build.server
cacheDir
섹션 제목: cacheDir타입: string
기본값: "./node_modules/.astro"
빌드 아티팩트를 캐싱하기 위한 디렉터리를 설정합니다. 이 디렉터리의 파일은 빌드 시간을 단축하기 위해 후속 빌드에서 사용됩니다.
값은 절대 파일 시스템 경로이거나 프로젝트 루트에 대한 상대 경로일 수 있습니다.
compressHTML
섹션 제목: compressHTML타입: boolean
기본값: true
이는 HTML 출력을 최소화하고 HTML 파일의 크기를 줄이는 옵션입니다.
기본적으로 Astro는 .astro
컴포넌트에서 줄 바꿈을 포함하여 HTML의 공백을 무손실 방식으로 제거합니다.
HTML의 시각적 렌더링을 유지하기 위해 필요에 따라 일부 공백이 유지될 수 있습니다. 이는 개발 모드와 최종 빌드 모두에서 발생합니다.
HTML 압축을 비활성화하려면 compressHTML
을 false로 설정하세요.
scopedStyleStrategy
섹션 제목: scopedStyleStrategy타입: 'where' | 'class' | 'attribute'
기본값: 'attribute'
astro@2.4
Astro 컴포넌트에서 스타일 범위 지정에 사용되는 전략을 지정합니다. 다음 중에서 선택하세요:
'where'
-:where
선택자를 사용하면 구체성이 증가하지 않습니다.'class'
- 클래스 기반 선택기를 사용하면 구체성이 +1 증가합니다.'attribute'
-data-
속성을 사용하면 구체성이 +1 증가합니다.
Astro 컴포넌트의 요소 선택기가 전역 스타일 기본값 (예: 전역 스타일시트)을 재정의하도록 하려는 경우 'class'
를 사용하는 것이 도움이 됩니다.
“where’를 사용하면 구체성을 더 잘 제어할 수 있지만, 적용되는 선택기를 제어하려면 더 높은 구체성 선택기, 레이어 및 기타 도구를 사용해야 합니다.
‘attribute’를 사용하는 것은 요소의
class` 속성을 조작하고 자신의 스타일 지정 로직과 Astro의 스타일 적용 사이의 충돌을 피해야 할 때 유용합니다.
security
섹션 제목: security타입: object
기본값: {}
astro@4.9.0
Astro 웹사이트에 대한 보안 조치를 활성화합니다.
이러한 기능은 server
모드를 사용하여 요청 시 렌더링된 페이지 (SSR) 또는 hybrid
모드에서 사전 렌더링을 선택 해제한 페이지에만 존재합니다.
security.checkOrigin
섹션 제목: security.checkOrigin타입: boolean
기본값: false
astro@4.9.0
활성화되면 모든 최신 브라우저에서 자동으로 전달되는 “origin” 헤더가 각 Request
에서 보낸 URL과 일치하는지 확인합니다. 이는 CSRF (Cross-Site Request Forgery) 보호를 위해 사용됩니다.
“origin” 확인은 요청 시 렌더링된 페이지에 대해서만 실행되며, content-type
헤더가 'application/x-www-form-urlencoded'
, 'multipart/form-data'
, 'text/plain'
중 하나인 POST
, PATCH
, DELETE
, PUT
요청에 대해서만 실행됩니다.
“origin” 헤더가 요청의 pathname
과 일치하지 않으면 Astro는 403 상태 코드를 반환하며 페이지를 렌더링하지 않습니다.
vite
섹션 제목: vite타입: ViteUserConfig
추가 구성 옵션을 Vite에 전달합니다. Astro가 필요할 수 있는 일부 고급 구성을 지원하지 않을 때 유용합니다.
vite.dev에서 전체 vite
구성 객체 문서를 확인하세요.
빌드 옵션
섹션 제목: 빌드 옵션build.format
섹션 제목: build.format타입: ('file' | 'directory' | 'preserve')
기본값: 'directory'
각 페이지의 출력 파일 형식을 제어합니다. 이 값은 어댑터에 의해 설정될 수 있습니다.
'file'
: Astro는 각 페이지 경로에 대해 이름이 지정된 HTML 파일을 생성합니다. (예를 들어src/pages/about.astro
와src/pages/about/index.astro
는 모두/about.html
파일을 빌드합니다)'directory'
: Astro는 각 페이지에 대해 중첩된index.html
파일이 있는 디렉터리를 생성합니다. (예를 들어src/pages/about.astro
와src/pages/about/index.astro
는 모두/about/index.html
파일을 빌드합니다)'preserve'
: Astro는 소스 폴더에 나타나는 HTML 파일을 정확하게 생성합니다. (예를 들어src/pages/about.astro
는/about.html
을 빌드하고src/pages/about/index.astro
는/about/index.html
파일을 빌드합니다.)
Astro.url에 미치는 영향
섹션 제목: Astro.url에 미치는 영향build.format
을 설정하면 빌드 중에 Astro.url
이 무엇으로 설정될지 제어할 수 있습니다.
directory
-Astro.url.pathname
에는 폴더 동작을 모방하기 위해 후행 슬래시가 포함됩니다. 즉/foo/
입니다.file
-Astro.url.pathname
에는.html
이 포함됩니다. 즉/foo.html
입니다.
이는 new URL('./relative', Astro.url)
을 사용하여 상대 URL을 생성할 때 개발과 빌드 간에 일관된 동작을 얻게 된다는 것을 의미합니다.
개발에서 후행 슬래시 동작의 불일치를 방지하려면 빌드 형식에 따라 trailingSlash
옵션을 'always'
또는 'never'
로 제한할 수 있습니다.
directory
-trailingSlash: 'always'
로 설정됩니다.file
-trailingSlash: 'never'
로 설정됩니다.
build.client
섹션 제목: build.client타입: string
기본값: './dist/client'
output: 'server'
또는 output: 'hybrid'
인 경우에만 클라이언트측 CSS 및 JavaScript의 출력 디렉터리를 제어합니다.
outDir
은 코드가 빌드되는 위치를 제어합니다.
이 값은 outDir
을 기준으로 합니다.
build.server
섹션 제목: build.server타입: string
기본값: './dist/server'
SSR로 빌드할 때 서버 JavaScript의 출력 디렉터리를 제어합니다.
이 값은 outDir
을 기준으로 합니다.
build.assets
섹션 제목: build.assets타입: string
기본값: '_astro'
astro@2.0.0
Astro에서 생성된 자산 (예: JS 및 CSS 번들)이 있어야 하는 빌드 출력의 디렉터리를 지정합니다.
참고하기:
- outDir
build.assetsPrefix
섹션 제목: build.assetsPrefix타입: string | Record.<string, string>
기본값: undefined
astro@2.2.0
Astro에서 생성된 자산 링크의 접두사를 지정합니다. 자산이 현재 사이트와 다른 도메인에서 제공되는 경우 사용할 수 있습니다.
이를 위해서는 로컬 ./dist/_astro
폴더의 자산을 원격 도메인의 해당 /_astro/
폴더에 업로드해야 합니다.
_astro
경로의 이름을 바꾸려면 build.assets
에 새 디렉터리를 지정합니다.
동일한 도메인 (예: https://cdn.example.com/_astro/...
)에 업로드된 모든 자산을 가져오려면 assetsPrefix
를 루트 도메인의 문자열로 설정합니다. (base
구성에 관계없이):
추가: astro@4.5.0
또한 assetsPrefix
에 객체를 전달하여 각 파일 형식에 대해 서로 다른 도메인을 지정할 수도 있습니다.
이 경우 fallback
속성이 필요하며 기본적으로 다른 파일에 사용됩니다.
build.serverEntry
섹션 제목: build.serverEntry타입: string
기본값: 'entry.mjs'
SSR로 빌드할 때 서버 엔트리포인트의 파일 이름을 지정합니다. 이 엔트리포인트는 일반적으로 배포하려는 호스트에 따라 달라지며 어댑터에 의해 설정됩니다.
런타임에서 파일이 JavaScript 모듈임을 감지할 수 있도록 이 파일은 .mjs
로 끝나는 것이 좋습니다.
build.redirects
섹션 제목: build.redirects타입: boolean
기본값: true
astro@2.6.0
빌드 중에 리디렉션을 HTML로 출력할지 여부를 지정합니다.
이 옵션은 output: 'static'
모드에만 적용됩니다. SSR 리디렉션에서는 모든 응답과 동일하게 처리됩니다.
이 옵션은 주로 리디렉션을 위한 특수 구성 파일이 있고 HTML 기반 리디렉션이 필요하지 않거나 필요하지 않은 어댑터에서 사용하기 위한 것입니다.
build.inlineStylesheets
섹션 제목: build.inlineStylesheets타입: 'always' | 'auto' | 'never'
기본값: auto
astro@2.6.0
프로젝트 스타일을 별도의 CSS 파일로 브라우저에 보낼지 <style>
태그에 인라인할지 제어합니다. 다음 옵션 중에서 선택하세요.
'always'
- 프로젝트 스타일은<style>
태그에 인라인됩니다.'auto'
-ViteConfig.build.assetsInlineLimit
(기본값: 4kb)보다 작은 스타일시트만 인라인됩니다. 그렇지 않으면 프로젝트 스타일이 외부 스타일시트로 전송됩니다.'never'
- 프로젝트 스타일은 외부 스타일시트로 전송됩니다.
build.concurrency
섹션 제목: build.concurrency타입: number
기본값: 1
astro@4.16.0
New
병렬로 빌드할 페이지 수입니다.
대부분의 경우 기본값인 1
을 변경하지 않아야 합니다.
이 옵션은 전체 렌더링 시간을 줄이기 위한 다른 시도 (예: 가져오기 호출 또는 데이터 액세스와 같은 장기 실행 작업의 배치 또는 캐시)가 불가능하거나 충분하지 않은 경우에만 사용하세요. 이 수치를 너무 높게 설정하면 메모리 리소스가 부족해지고 JS가 단일 스레드이기 때문에 페이지 렌더링 속도가 느려질 수 있습니다.
이 기능은 안정적이며 실험적인 것으로 간주되지 않습니다. 그러나 이 기능은 어려운 성능 문제를 해결하기 위한 용도로만 사용되며, 이 옵션의 성능을 최대한 유지하기 위해 마이너 릴리스에서 주요 변경 사항이 발생할 수 있습니다. 이 기능을 사용하는 경우 모든 마이너 릴리스에 대한 Astro 변경 로그를 확인하시기 바랍니다.
서버 옵션
섹션 제목: 서버 옵션astro dev
와 astro preview
모두에서 사용되는 Astro 개발 서버를 사용자 정의하세요.
실행 명령 (“dev”, “preview”)을 기반으로 다른 구성을 설정하려면 이 구성 옵션에 함수를 전달할 수도 있습니다.
server.host
섹션 제목: server.host타입: string | boolean
기본값: false
astro@0.24.0
서버가 수신해야 하는 네트워크 IP 주소 (예: 로컬 호스트가 아닌 IP)를 설정합니다.
false
- 네트워크 IP 주소를 노출하지 않습니다.true
- LAN 및 공용 주소를 포함한 모든 주소에서 수신합니다.[custom-address]
-[custom-address]
(예:192.168.0.1
)의 네트워크 IP 주소를 노출합니다.
server.port
섹션 제목: server.port타입: number
기본값: 4321
서버가 수신해야 하는 포트를 설정합니다.
주어진 포트가 이미 사용 중이라면 Astro는 자동으로 다음 사용 가능한 포트를 시도합니다.
server.open
섹션 제목: server.open타입: string | boolean
기본값: false
astro@2.1.8
시작 시 개발 서버가 브라우저 창에서 열릴지 여부를 제어합니다.
열려는 URL을 지정하려면 전체 URL 문자열 (예: ”http://example.com”) 또는 경로 이름 (예: “/about”)을 전달하세요.
server.headers
섹션 제목: server.headers타입: OutgoingHttpHeaders
기본값: {}
astro@1.7.0
astro dev
및 astro preview
에서 전송되도록 사용자 정의 HTTP 응답 헤더를 설정합니다.
개발 툴바 옵션
섹션 제목: 개발 툴바 옵션devToolbar.enabled
섹션 제목: devToolbar.enabled타입: boolean
기본값: true
Astro 개발 툴바를 활성화할지 여부입니다. 이 툴바를 사용하면 페이지 아일랜드를 검사하고 성능 및 접근성에 대한 유용한 정보를 볼 수 있습니다.
이 옵션은 전체 프로젝트로 범위가 지정되며, 자신에 대해서만 툴바를 비활성화하려면 npm run astro preferences disable devToolbar
를 실행하세요. 모든 Astro 프로젝트에 대한 툴바를 비활성화하려면 npm run astro preferences disable devToolbar --global
을 실행하세요.
프리페치 옵션
섹션 제목: 프리페치 옵션타입: boolean | object
더 빠른 페이지 전환을 제공하려면 사이트의 링크에 대해 프리페치를 활성화하세요.
(<ViewTransitions />
라우터를 사용하는 페이지에서는 기본적으로 활성화됩니다. 이 동작을 선택하지 않으려면 prefetch: false
를 설정하세요.)
이 구성은 프로젝트의 모든 페이지에 프리페치 스크립트를 자동으로 추가하여 data-astro-prefetch
속성에 대한 액세스를 제공합니다.
해당 페이지에 대한 프리페칭을 활성화하려면 페이지의 <a />
링크에 이 속성을 추가하세요.
prefetch.defaultStrategy
및 prefetch.prefetchAll
옵션을 사용하여 기본 프리페치 동작을 추가로 사용자 정의하세요.
자세한 내용은 프리페치 안내서를 참조하세요.
prefetch.prefetchAll
섹션 제목: prefetch.prefetchAll타입: boolean
data-astro-prefetch
속성이 없는 링크를 포함하여 모든 링크에 대해 프리페치를 활성화합니다.
<ViewTransitions />
라우터를 사용할 때 이 값의 기본값은 true
입니다. 그렇지 않은 경우 기본값은 false
입니다.
true
로 설정하면 개별 링크에 data-astro-prefetch="false"
를 설정하여 프리페치를 개별적으로 비활성화할 수 있습니다.
prefetch.defaultStrategy
섹션 제목: prefetch.defaultStrategy타입: 'tap' | 'hover' | 'viewport' | 'load'
기본값: 'hover'
data-astro-prefetch
속성이 없는 링크에 설정된 경우 사용할 기본 프리페치 전략입니다.
'tap'
: 링크를 클릭하기 직전에 미리 가져옵니다.'hover'
: 링크 위로 마우스를 가져가거나 링크에 초점을 맞추면 미리 가져옵니다. (기본값)'viewport'
: 링크가 뷰포트에 들어갈 때 미리 가져옵니다.'load'
: 페이지가 로드된 후 페이지의 모든 링크를 미리 가져옵니다.
속성에 값을 설정하여 이 기본값을 무시하고 개별 링크에 대해 다른 전략을 선택할 수 있습니다.
이미지 옵션
섹션 제목: 이미지 옵션image.endpoint
섹션 제목: image.endpoint타입: string
기본값: undefined
astro@3.1.0
개발 및 SSR에서 이미지 최적화에 사용할 엔드포인트를 설정합니다. 기본 엔드포인트를 사용하려면 undefined
로 설정하세요.
엔드포인트는 항상 /_image
에 삽입됩니다.
image.service
섹션 제목: image.service타입: Object
기본값: {entrypoint: 'astro/assets/services/sharp', config?: {}}
astro@2.1.0
Astro의 자산 지원에 사용되는 이미지 서비스를 설정합니다.
값은 이미지 서비스가 사용할 엔트리포인트가 있는 객체여야 하며 선택적으로 서비스에 전달할 구성 객체여야 합니다.
서비스 엔트리포인트는 포함된 서비스 중 하나이거나 타사 패키지일 수 있습니다.
image.service.config.limitInputPixels
섹션 제목: image.service.config.limitInputPixels타입: boolean
기본값: true
astro@4.1.0
Sharp 이미지 서비스가 처리할 이미지 크기를 제한할지 여부입니다.
Sharp 이미지 서비스의 기본 이미지 크기 제한을 우회하고 큰 이미지를 처리하려면 false
를 설정하세요.
image.domains
섹션 제목: image.domains타입: Array.<string>
기본값: []
astro@2.10.10
원격 이미지 최적화를 위해 허용되는 이미지 소스 도메인 목록을 정의합니다. 다른 원격 이미지는 Astro에서 최적화되지 않습니다.
이 옵션에는 개별 도메인 이름의 배열이 문자열로 필요합니다. 와일드카드는 허용되지 않습니다. 대신 image.remotePatterns
를 사용하여 허용되는 소스 URL 패턴 목록을 정의하세요.
image.remotePatterns
섹션 제목: image.remotePatterns타입: Array.<RemotePattern>
기본값: {remotePatterns: []}
astro@2.10.10
원격 이미지 최적화를 위해 허용되는 이미지 소스 URL 패턴 목록을 정의합니다.
remotePatterns
는 네 가지 속성으로 구성할 수 있습니다.
- protocol
- hostname
- port
- pathname
아래 설명과 같이 와일드카드를 사용하여 허용되는 hostname
및 pathname
값을 정의할 수 있습니다. 그렇지 않으면 제공된 정확한 값만 구성됩니다.
hostname
:
- ’**’ 로 시작하면 모든 하위 도메인 (‘endsWith’)을 허용합니다.
- ’*’ 로 시작하면 한 수준의 하위 도메인만 허용합니다.
pathname
:
- 모든 하위 경로 (‘startsWith’)를 허용하려면 ’/**’ 로 끝납니다.
- 한 수준의 하위 경로만 허용하려면 ’/*’ 로 끝납니다.
Markdown 옵션
섹션 제목: Markdown 옵션markdown.shikiConfig
섹션 제목: markdown.shikiConfig타입: Partial<ShikiConfig>
Shiki 구성 옵션. 사용법은 Markdown 구성 문서를 참조하세요.
markdown.syntaxHighlight
섹션 제목: markdown.syntaxHighlight타입: 'shiki' | 'prism' | false
기본값: shiki
사용할 구문 강조 표시 (있는 경우)
markdown.remarkPlugins
섹션 제목: markdown.remarkPlugins타입: RemarkPlugins
remark 플러그인을 전달하여 Markdown 빌드 방법을 맞춤설정하세요. 플러그인 기능을 가져와 적용하거나 (권장) 플러그인 이름을 문자열로 전달할 수 있습니다.
markdown.rehypePlugins
섹션 제목: markdown.rehypePlugins타입: RehypePlugins
rehype 플러그인을 전달하여 Markdown의 출력 HTML이 처리되는 방식을 맞춤설정하세요. 플러그인 기능을 가져와 적용하거나 (권장) 플러그인 이름을 문자열로 전달할 수 있습니다.
markdown.gfm
섹션 제목: markdown.gfm타입: boolean
기본값: true
astro@2.0.0
Astro는 기본적으로 GitHub 기반 Markdown을 사용합니다. 이를 비활성화하려면 gfm
플래그를 false
로 설정하세요.
markdown.smartypants
섹션 제목: markdown.smartypants타입: boolean
기본값: true
astro@2.0.0
Astro는 기본적으로 SmartyPants 포매터를 사용합니다. 이를 비활성화하려면 smartypants
플래그를 false
로 설정하세요.
markdown.remarkRehype
섹션 제목: markdown.remarkRehype타입: RemarkRehype
옵션을 remark-rehype에 전달하세요.
i18n
섹션 제목: i18n타입: object
astro@3.5.0
i18n 라우팅을 구성하고 일부 맞춤 옵션을 지정할 수 있습니다.
Astro의 국제화에 대한 자세한 내용은 안내서를 참조하세요.
i18n.defaultLocale
섹션 제목: i18n.defaultLocale타입: string
astro@3.5.0
웹사이트/애플리케이션의 기본 언어입니다. 필수 필드입니다.
특정 언어 형식이나 구문이 적용되지는 않지만 호환성을 극대화하려면 필요에 따라 소문자와 하이픈 (예: “es”, “pt-br”)을 사용하는 것이 좋습니다.
i18n.locales
섹션 제목: i18n.locales타입: Locales
astro@3.5.0
defaultLocale
을 포함하여 웹사이트에서 지원하는 모든 언어의 목록입니다. 필수 필드입니다.
언어는 개별 코드 (예: ['en', 'es', 'pt-br']
)로 나열되거나 공유된 코드 path
(예: { path: "english", codes: ["en", "en-US"]}
)에 매핑될 수 있습니다. 이 코드는 배포된 사이트의 URL 구조를 결정하는 데 사용됩니다.
특정 언어 코드 형식이나 구문은 적용되지 않지만 콘텐츠 파일이 포함된 프로젝트 폴더는 목록의 locales
항목과 정확히 일치해야 합니다. 맞춤 URL 경로 접두사를 가리키는 여러 codes
가 있는 경우 구성된 path
와 동일한 이름을 가진 폴더에 콘텐츠 파일을 저장하세요.
i18n.fallback
섹션 제목: i18n.fallback타입: Record.<string, string>
astro@3.5.0
존재하지 않는 페이지로 이동할 때의 대체 전략 (예: 번역된 페이지가 생성되지 않음)
이 객체를 사용하여 지원하는 각 언어에 대한 대체 locale
경로를 선언하세요. 대체가 지정되지 않으면 사용할 수 없는 페이지는 404를 반환합니다.
다음 예시는 /pt-br/
에서 사용할 수 없는 페이지를 es
버전으로 리디렉션하고, /fr/
에서 사용할 수 없는 페이지를 en
버전으로 리디렉션하도록 콘텐츠 대체 전략을 구성합니다. 사용할 수 없는 /es/
페이지는 404를 반환합니다.
i18n.routing
섹션 제목: i18n.routing타입: Routing
astro@3.7.0
사이트 URL을 결정하기 위한 라우팅 전략을 제어합니다. 기본 언어에 대한 폴더/URL 경로 구성을 기반으로 이를 설정합니다.
i18n.routing.prefixDefaultLocale
섹션 제목: i18n.routing.prefixDefaultLocale타입: boolean
기본값: false
astro@3.7.0
false
인 경우 기본이 아닌 언어에만 언어 접두사가 표시됩니다.
defaultLocale
은 언어 접두사를 표시하지 않으며, 콘텐츠 파일은 현지화된 폴더에 존재하지 않습니다.
URL은 기본이 아닌 모든 언어의 경우 example.com/[locale]/content/
형식이지만 기본 언어의 경우 example.com/content/
형식입니다.
true
인 경우 모든 URL에 언어 접두사가 표시됩니다.
URL은 기본 언어를 포함하여 모든 경로에 대해 example.com/[locale]/content/
형식입니다.
현지화된 폴더는 기본값을 포함하여 모든 언어에 사용됩니다.
i18n.routing.redirectToDefaultLocale
섹션 제목: i18n.routing.redirectToDefaultLocale타입: boolean
기본값: true
astro@4.2.0
prefixDefaultLocale: true
가 설정된 경우 src/pages/index.astro
에 의해 생성된 홈 URL (/
)이 /[defaultLocale]
로 리디렉션되는지 여부를 구성합니다.
사이트 루트에서 자동 리디렉션을 비활성화하려면 redirectToDefaultLocale: false
를 설정하세요.
i18n.routing.fallbackType
섹션 제목: i18n.routing.fallbackType타입: "redirect" | "rewrite"
기본값: "redirect"
astro@4.15.0
누락된 페이지 경로에 대해 404 페이지를 표시하지 않도록 i18n.fallback
을 구성한 경우 이 옵션은 대체 페이지로 리디렉션할 것인지 아니면 대체 페이지의 콘텐츠를 그대로 리라이트할 것인지 제어합니다.
기본적으로 Astro의 i18n 라우팅은 대체 구성에 따라 방문자를 새 목적지로 리디렉션하는 페이지를 생성합니다. 브라우저가 새로고침되고 URL 표시줄에 목적지 주소가 표시됩니다.
i18n.routing.fallback: "rewrite"
이 구성되면 Astro는 요청된 원본 URL에 대체 페이지의 콘텐츠를 렌더링하는 페이지를 생성합니다.
다음 구성의 경우, src/pages/en/about.astro
파일은 있지만 src/pages/fr/about.astro
가 없는 경우 astro build
명령은 dist/en/about.html
페이지와 동일한 내용의 dist/fr/about.html
을 생성합니다.
사이트 방문자는 https://example.com/fr/about/
에서 영문 버전의 페이지를 볼 수 있으며 리디렉션되지 않습니다.
i18n.routing.manual
섹션 제목: i18n.routing.manual타입: string
astro@4.6.0
이 옵션이 활성화되면 Astro는 사용자 정의 로직을 구현할 수 있도록 i18n 미들웨어를 비활성화합니다. 다른 routing
옵션 (예: prefixDefaultLocale
)은 routing: "manual"
으로 구성할 수 없습니다.
여러분은 자신만의 라우팅 로직을 작성하거나 Astro의 i18n 미들웨어를 수동으로 실행할 책임이 있습니다.
Legacy 플래그
섹션 제목: Legacy 플래그일부 사용자가 Astro 버전 간에 마이그레이션할 수 있도록 돕기 위해 때때로 legacy
플래그를 도입합니다.
이러한 플래그를 사용하면 최신 버전에서 더 이상 사용되지 않거나 오래된 Astro의 동작을 선택할 수 있으므로 계속 업그레이드하고 새로운 Astro 릴리스를 활용할 수 있습니다.
Experimental 플래그
섹션 제목: Experimental 플래그Astro는 사용자가 새로운 기능에 조기에 액세스할 수 있도록 experimental 플래그를 제공합니다. 이러한 플래그는 안정성이 보장되지 않습니다.
experimental.directRenderScript
섹션 제목: experimental.directRenderScript타입: boolean
기본값: false
astro@4.5.0
스크립트가 사용되지 않는 페이지에서 스크립트가 실행되는 것을 방지하기 위해 보다 안정적인 전략을 가능하게 합니다.
스크립트는 Astro 파일에 선언된 대로 직접 렌더링됩니다. (TypeScript, node_modules
가져오기, 중복 제거 스크립트 등 기존 기능 포함) 이제 Astro 파일에서 조건부로 스크립트를 렌더링할 수도 있습니다.
그러나 이는 스크립트가 더 이상 <head>
로 끌어올려지지 않으며 페이지의 여러 스크립트가 더 이상 번들링되지 않음을 의미합니다.
이 옵션을 활성화하면 모든 <script>
태그가 예상대로 작동하는지 확인해야 합니다.
이 옵션은 Astro 4.5.0에서 기본적으로 활성화됩니다.
experimental.contentCollectionCache
섹션 제목: experimental.contentCollectionCache타입: boolean
기본값: false
astro@3.5.0
정적 모드에서 빌드할 때 콘텐츠 컬렉션에 대한 영구 캐시를 활성화합니다.
experimental.clientPrerender
섹션 제목: experimental.clientPrerender타입: boolean
기본값: false
astro@4.2.0
지원되는 브라우저의 클라이언트에서 미리 가져온 페이지를 사전 렌더링할 수 있습니다.
이 기능은 실험적인 Speculation Rules Web API를 사용하여 기본 prefetch
동작을 전역적으로 향상시켜 클라이언트에서 링크를 사전 렌더링합니다.
이 기능을 활성화하기 전에 클라이언트에서 사전 렌더링할 때 발생할 수 있는 위험을 검토하는 것이 좋습니다.
원하는 prefetch
구성 옵션과 함께 astro.config.mjs
파일에서 클라이언트 측 사전 렌더링을 활성화하세요.
프리페치를 선택하려면 사이트의 <a />
링크에서 data-astro-prefetch
속성을 계속 사용하세요.
문서 헤드에 <link>
태그를 추가하거나 JavaScript로 페이지를 가져오는 대신 <script>
태그에 해당 speculation rules이 추가됩니다.
클라이언트 측 사전 렌더링에는 브라우저 지원이 필요합니다. Speculation Rules API가 지원되지 않는 경우 prefetch
는 지원되는 전략으로 대체됩니다.
더 많은 prefetch
옵션 및 사용법은 프리페치 가이드를 참조하세요.
experimental.globalRoutePriority
섹션 제목: experimental.globalRoutePriority타입: boolean
기본값: false
astro@4.2.0
모든 경로에 대해 동일한 경로 우선 순위 규칙을 따라 파일 기반 프로젝트 경로와 함께 리디렉션 및 삽입된 경로의 우선 순위를 동일하게 지정합니다.
이를 통해 특정 유형의 경로에 자동으로 우선순위를 지정하지 않음으로써 프로젝트의 경로를 보다 효과적으로 제어할 수 있으며 모든 경로에 대한 경로 우선순위 순서를 표준화합니다.
다음 예시에서는 파일 기반 경로, 삽입된 경로 및 리디렉션이 결합될 때 어떤 경로가 특정 페이지 URL을 빌드하는지 보여줍니다.
- 파일 기반 경로:
/blog/post/[pid]
- 파일 기반 경로:
/[page]
- 삽입된 경로:
/blog/[...slug]
- 리디렉션:
/blog/tags/[tag]
->/[tag]
- 리디렉션:
/posts
->/blog
experimental.globalRoutingPriority
를 활성화한 경우 (Astro 4.0 기본 경로 우선 순위 대신):
/blog/tags/astro
는/tags/[tag]
로의 리디렉션에 의해 빌드됩니다. (삽입된 경로인/blog/[...slug]
대신)/blog/post/0
은 파일 기반 경로인/blog/post/[pid]
에 의해 빌드됩니다. (삽입된 경로인/blog/[...slug]
대신)/posts
는/blog
로의 리디렉션에 의해 빌드됩니다. (파일 기반 경로인/[page]
대신)
경로 우선순위가 동일한 두 경로가 동일한 URL을 빌드하려고 시도하는 경로 충돌이 발생하는 경우 Astro는 충돌하는 경로를 식별하는 경고를 기록합니다.
experimental.env
섹션 제목: experimental.env타입: object
기본값: undefined
astro@4.10.0
실험적인 astro:env
기능을 활성화합니다.
astro:env
API를 사용하면 환경 변수에 대해 타입 안정성을 갖춘 스키마를 구성하고 서버 또는 클라이언트에서 사용할 수 있는지 여부를 나타낼 수 있습니다. 적절한 /client
또는 /server
모듈에서 정의된 변수를 가져와 사용합니다.
환경 변수의 데이터 타입과 속성을 정의하려면 experimental.env.schema
Astro 구성에 스키마를 선언하세요. envField
도우미를 사용하면 변수를 문자열, 숫자 또는 부울로 정의하고 객체에 속성을 전달할 수 있습니다.
현재 지원되는 데이터 타입은 문자열, 숫자, 부울, 열거형 네 가지입니다.
env.schema
에 정의된 context
(클라이언트 또는 서버) 및 access
(비밀 또는 공개) 설정의 조합에 따라 결정되는 세 종류의 환경 변수가 있습니다.
-
공개 클라이언트 변수: 이러한 변수는 최종 클라이언트 및 서버 번들 모두에 포함되며
astro:env/client
모듈을 통해 클라이언트와 서버 모두에서 액세스할 수 있습니다. -
공개 서버 변수: 이 변수는 최종 서버 번들에 포함되며
astro:env/server
모듈을 통해 서버에서 액세스할 수 있습니다. -
비밀 서버 변수: 이 변수는 최종 번들의 일부가 아니며
astro:env/server
모듈을 통해 서버에서 액세스할 수 있습니다.getSecret()
도우미 함수를 사용하면 스키마에 지정되지 않은 비밀을 검색할 수 있습니다. 이 구현은 어댑터에서 제공되며, 기본값은process.env
입니다:
참고: 이 데이터를 클라이언트에 보내는 안전한 방법이 없기 때문에 비밀 클라이언트 변수는 지원되지 않습니다. 따라서 스키마에서 context: "client"
와 access: "secret"
을 모두 구성하는 것은 불가능합니다.
전체 개요를 확인하고 이 실험적 API에 대한 피드백을 제공하려면 Astro Env RFC를 참조하세요.
experimental.env.schema
섹션 제목: experimental.env.schema타입: EnvSchema
기본값: undefined
astro@4.10.0
envField
를 사용하여 데이터 타입 (string
, number
, boolean
)과 환경 변수의 속성 (context
(클라이언트 또는 서버), access
(공개 또는 비밀), default
(사용할 기본값)) 및 환경 변수의 선택 사항 여부 (기본 값은 false
)를 정의하는 객체입니다.
experimental.env.validateSecrets
섹션 제목: experimental.env.validateSecrets타입: boolean
기본값: false
astro@4.11.6
개발 서버를 시작하거나 빌드를 실행할 때 서버에서 비밀의 유효성을 검사할지 여부입니다.
기본적으로 개발 서버나 빌드를 시작할 때 서버에서는 공개 변수만 검증되고, 비공개 변수는 런타임에만 검증됩니다. 이 옵션이 활성화되면 개발 서버나 빌드 시작 시 비공개 변수도 함께 검증됩니다. 이는 일부 CI (지속적 통합) 파이프라인에서 배포하기 전에 모든 비밀이 올바르게 설정되었는지 확인하는 데 유용합니다.
experimental.serverIslands
섹션 제목: experimental.serverIslands타입: boolean
기본값: false
astro@4.12.0
실험적인 서버 아일랜드 기능을 활성화합니다. 서버 아일랜드는 페이지가 이미 렌더링된 후, 비동기적으로 렌더링되도록 컴포넌트를 지연시키는 기능을 제공합니다.
활성화하려면 어댑터를 사용하여 주문형 서버 렌더링 output
모드를 구성하고 experimental
객체에 serverIslands
플래그를 추가합니다
Astro 컴포넌트에서 server:defer
지시어를 사용하면 초기 렌더링을 지연시킬 수 있습니다:
외부 페이지는 빌드 타임 (hybrid
) 또는 런타임(server
)에 아일랜드 콘텐츠가 생략되고 그 자리에 <script>
태그가 포함된 상태로 렌더링됩니다.
브라우저에서 페이지가 로드된 후 스크립트 태그는 요청을 통해 아일랜드 콘텐츠로 교체됩니다.
모든 Astro 컴포넌트는 server: defer
속성을 지정하여 렌더링을 지연시킬 수 있습니다. 특별한 API는 없으며 평소처럼 .astro
코드를 작성하면 됩니다.
서버 아일랜드 대체 콘텐츠
섹션 제목: 서버 아일랜드 대체 콘텐츠컴포넌트가 페이지의 나머지 부분과 함께 렌더링되지 않으므로 일반 콘텐츠 (예: 로딩 메시지)를 추가하여 임시로 그 자리에 표시할 수 있습니다. 이 콘텐츠는 페이지가 처음 렌더링되고 아일랜드가 로드되기 전에 나타납니다.
slot="fallback"
속성을 가진 자리 표시자 콘텐츠를 Astro 컴포넌트의 자식으로 추가합니다. 아일랜드 콘텐츠를 사용할 수 있게 되면 대체 콘텐츠가 교체됩니다.
아래 예시에서는 일반 아바타를 대체 콘텐츠로 표시한 다음, view transitions를 사용하여 개인화된 아바타로 애니메이션을 표시합니다.
전체 개요를 보거나 이 실험적인 API에 대한 피드백을 제공하려면 서버 아일랜드 RFC를 참조하세요.
experimental.contentIntellisense
섹션 제목: experimental.contentIntellisense타입: boolean
기본값: false
astro@4.14.0
호환되는 편집기에서 콘텐츠 컬렉션 항목에 대한 Intellisense 기능 (예: 코드 완성, 빠른 힌트)을 사용하도록 설정합니다.
이 기능을 활성화하면 프로젝트의 .astro
디렉터리에 JSON 스키마가 생성되어 추가됩니다. Astro 언어 서버는 내부 콘텐츠 파일 (.md
, .mdx
, .mdoc
)에서 Intellisense를 제공하기 위해 이러한 파일을 사용할 수 있습니다.
Astro VS Code 확장 프로그램에서 이 기능을 사용하려면 VS Code 설정에서 astro.content-intellisense
옵션도 활성화해야 합니다. Astro 언어 서버를 직접 사용하는 편집기에서 이 기능을 활성화하려면 contentIntellisense: true
초기화 매개 변수를 전달하세요. 이 초기 기능에 대한 자세한 내용은 콘텐츠 인텔리센스 구현 PR을 참조하세요.
experimental.contentLayer
섹션 제목: experimental.contentLayer타입: boolean
기본값: false
astro@4.14.0
Content Layer API는 Astro에서 콘텐츠와 데이터를 처리하는 새로운 방법입니다. 이는 콘텐츠 컬렉션과 유사하며 이를 기반으로 src/content/
의 로컬 파일을 넘어 컬렉션에 loader
를 추가하여 원격 API를 포함한 모든 곳에서 콘텐츠를 가져올 수 있도록 합니다.
기존 콘텐츠 컬렉션은 몇 가지 작은 변경을 통해 Content Layer API로 마이그레이션할 수 있습니다. 그러나 Content Layer API로 구동되는 새 컬렉션을 추가하기 위해 모든 컬렉션을 한 번에 업데이트할 필요는 없습니다. src/content/config.ts
에 정의된 기존 API와 새 API를 동시에 사용하는 컬렉션을 가질 수 있습니다.
Content Layer API는 더욱 강력하고 성능이 뛰어나도록 설계되어 사이트가 수천 페이지로 확장할 수 있도록 지원합니다. 데이터는 빌드 간 캐시되고 점진적으로 업데이트됩니다. 비슷한 크기의 메모리 감소로 Markdown 구문 분석은 5-10배 빨라지고, MDX는 2-3배 더 빨라집니다.
활성화하려면 Astro 구성의 experimental
객체에 contentLayer
플래그를 추가하세요:
loader
를 사용하여 데이터 가져오기
섹션 제목: loader를 사용하여 데이터 가져오기Content Layer API를 사용하면 (프로젝트에 로컬로 저장하든 원격으로 저장하든) src/content/
폴더 외부에서 콘텐츠를 가져올 수 있으며, loader
속성을 사용하여 데이터를 검색할 수 있습니다.
loader
는 컬렉션의 스키마에 정의되어 있으며 항목의 배열을 반환합니다. Astro는 로컬 콘텐츠를 가져오기 위한 두 가지 내장 로더 함수 (glob()
및 file()
)와 자체 로더를 구성하고 원격 데이터를 가져오기 위한 API 액세스를 제공합니다.
glob()
로더는 파일 시스템 어디에서나 Markdown, MDX, Markdoc 또는 JSON 파일 디렉터리에서 항목을 만듭니다. 일치시킬 항목 파일인 pattern
과 파일이 있는 위치를 나타내는 파일 경로인 base
를 인자로 전달받습니다. 항목당 파일이 하나씩 있을 때 이 옵션을 사용하세요.
file()
로더는 단일 로컬 파일에서 여러 항목을 생성합니다. 모든 항목이 객체 배열에 저장되어 있을 때 이 방법을 사용합니다.
로더는 _
로 시작하는 파일을 자동으로 제외하지 않습니다. 이러한 파일을 제외하려면 pattern: '**\/[^_]*.md'
와 같은 정규 표현식을 사용하세요.
Content Layer API로 쿼리 및 렌더링하기
섹션 제목: Content Layer API로 쿼리 및 렌더링하기컬렉션은 콘텐츠 컬렉션과 동일한 방식으로 쿼리할 수 있습니다:
Markdown, MDX 또는 Markdoc에서 생성된 항목은 render()
함수를 사용하여 페이지에 직접 렌더링할 수 있습니다.
컬렉션 항목을 렌더링하는 구문은 현재 콘텐츠 컬렉션 구문과 다릅니다.
로더 만들기
섹션 제목: 로더 만들기Content Layer API를 사용하면 어디에서나 콘텐츠를 로드하거나 생성하는 로더를 빌드할 수 있습니다.
예를 들어 원격 API에서 컬렉션 항목을 가져오는 로더를 만들 수 있습니다.
더 복잡한 로딩 로직을 위해 객체 로더를 정의할 수 있습니다. 이를 통해 증분 업데이트와 조건부 로딩이 가능해지며, 데이터 저장소에 대한 전체 액세스 권한도 부여할 수 있습니다. Content Layer API RFC에서 API를 참조하세요.
Content Layer API를 사용하기 위해 기존 콘텐츠 컬렉션 마이그레이션하기
섹션 제목: Content Layer API를 사용하기 위해 기존 콘텐츠 컬렉션 마이그레이션하기기존 콘텐츠 컬렉션을 Markdown, MDX, Markdoc, 또는 JSON 항목으로 변환하여 Content Layer API를 사용할 수 있습니다.
-
컬렉션 폴더를
src/content/
외부로 이동합니다 (예:src/data/
로).src/content/
폴더에 있는 모든 컬렉션은 기존 콘텐츠 컬렉션 API를 사용합니다.기존
src/content/config.ts
파일을 이동하지 마세요. 이 파일은 두 API를 사용하여 모든 컬렉션을 정의합니다. -
컬렉션 정의를 수정합니다. 업데이트된 컬렉션에는
loader
가 필요하며, 컬렉션type
을 선택하는 옵션은 더 이상 사용할 수 없습니다. -
참조를
slug
에서id
로 변경합니다. 콘텐츠 레이어 컬렉션에는slug
필드가 없습니다. 대신 업데이트된 모든 컬렉션에는id
가 있습니다. -
새
render()
함수로 전환합니다. 이제 항목은 직렬화 가능한 일반 객체이므로 더 이상render()
메서드를 가지지 않습니다. 대신astro:content
에서render()
함수를 가져옵니다.
더 알아보기
섹션 제목: 더 알아보기전체 개요와 전체 API 참조는 Content Layer API RFC를 확인하고 피드백을 공유하세요.
Reference