
🍿 Minor Changes
-
#9839
58f9e393a188702eef5329e41deff3dcb65a3230Thanks @Princesseuh! - Adds a newComponentPropstype export fromastro/typesto get the props type of an Astro component.---import type { ComponentProps } from 'astro/types';import { Button } from './Button.astro';type myButtonProps = ComponentProps<typeof Button>;--- -
#9159
7d937c158959e76443a02f740b10e251d14dbd8cThanks @bluwy! - Adds CLI shortcuts as an easter egg for the dev server:o + enter: opens the site in your browserq + enter: quits the dev serverh + enter: prints all available shortcuts
-
#9764
fad4f64aa149086feda2d1f3a0b655767034f1a8Thanks @matthewp! - Adds a newbuild.formatconfiguration option:'preserve'. This option will preserve your source structure in the final build.The existing configuration options,
fileanddirectory, either build all of your HTML pages as files matching the route name (e.g./about.html) or build all your files asindex.htmlwithin a nested directory structure (e.g./about/index.html), respectively. It was not previously possible to control the HTML file built on a per-file basis.One limitation of
build.format: 'file'is that it cannot createindex.htmlfiles for any individual routes (other than the base path of/) while otherwise building named files. Creating explicit index pages within your file structure still generates a file named for the page route (e.g.src/pages/about/index.astrobuilds/about.html) when using thefileconfiguration option.Rather than make a breaking change to allow
build.format: 'file'to be more flexible, we decided to create a newbuild.format: 'preserve'.The new format will preserve how the filesystem is structured and make sure that is mirrored over to production. Using this option:
about.astrobecomesabout.htmlabout/index.astrobecomesabout/index.html
See the
build.formatconfiguration options reference for more details. -
#9143
041fdd5c89920f7ccf944b095f29e451f78b0e28Thanks @ematipico! - Adds experimental support for a new i18n domain routing option ("domains") that allows you to configure different domains for individual locales in entirely server-rendered projects.To enable this in your project, first configure your
server-rendered project’s i18n routing with your preferences if you have not already done so. Then, set theexperimental.i18nDomainsflag totrueand addi18n.domainsto map any of your supportedlocalesto custom URLs://astro.config.mjs"import { defineConfig } from 'astro/config';export default defineConfig({site: 'https://example.com',output: 'server', // required, with no prerendered pagesadapter: node({mode: 'standalone',}),i18n: {defaultLocale: 'en',locales: ['es', 'en', 'fr', 'ja'],routing: {prefixDefaultLocale: false,},domains: {fr: 'https://fr.example.com',es: 'https://example.es',},},experimental: {i18nDomains: true,},});With
"domains"configured, the URLs emitted bygetAbsoluteLocaleUrl()andgetAbsoluteLocaleUrlList()will use the options set ini18n.domains.import { getAbsoluteLocaleUrl } from 'astro:i18n';getAbsoluteLocaleUrl('en', 'about'); // will return "https://example.com/about"getAbsoluteLocaleUrl('fr', 'about'); // will return "https://fr.example.com/about"getAbsoluteLocaleUrl('es', 'about'); // will return "https://example.es/about"getAbsoluteLocaleUrl('ja', 'about'); // will return "https://example.com/ja/about"Similarly, your localized files will create routes at corresponding URLs:
- The file
/en/about.astrowill be reachable at the URLhttps://example.com/about. - The file
/fr/about.astrowill be reachable at the URLhttps://fr.example.com/about. - The file
/es/about.astrowill be reachable at the URLhttps://example.es/about. - The file
/ja/about.astrowill be reachable at the URLhttps://example.com/ja/about.
See our Internationalization Guide for more details and limitations on this experimental routing feature.
- The file
-
#9755
d4b886141bb342ac71b1c060e67d66ca2ffbb8bdThanks @OliverSpeir! - Fixes an issue where images in Markdown required a relative specifier (e.g../)Now, you can use the standard
syntax in Markdown files for images colocated in the same folder: no relative specifier required!There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these Markdown images as they are no longer necessary:
<!-- This dog lives in the same folder as my article! -->
🐞 Patch Changes
-
#9908
2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593Thanks @lilnasy! - Improves http behavior relating to errors encountered while streaming a response. -
#9877
7be5f94dcfc73a78d0fb301eeff51614d987a165Thanks @fabiankachlock! - Fixes the content config type path on windows -
#9143
041fdd5c89920f7ccf944b095f29e451f78b0e28Thanks @ematipico! - Fixes an issue where the functiongetLocaleRelativeUrlListwasn’t normalising the paths by default -
#9911
aaedb848b1d6f683840035865528506a346ea659Thanks @natemoo-re! - Fixes an issue where some adapters that do not include astart()export would error rather than silently proceed