Minor Changes
-
#9839
58f9e393a188702eef5329e41deff3dcb65a3230
Thanks @Princesseuh! - Adds a newComponentProps
type export fromastro/types
to 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
7d937c158959e76443a02f740b10e251d14dbd8c
Thanks @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
fad4f64aa149086feda2d1f3a0b655767034f1a8
Thanks @matthewp! - Adds a newbuild.format
configuration option:'preserve'
. This option will preserve your source structure in the final build.The existing configuration options,
file
anddirectory
, either build all of your HTML pages as files matching the route name (e.g./about.html
) or build all your files asindex.html
within 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.html
files 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.astro
builds/about.html
) when using thefile
configuration 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.astro
becomesabout.html
about/index.astro
becomesabout/index.html
See the
build.format
configuration options reference for more details. -
#9143
041fdd5c89920f7ccf944b095f29e451f78b0e28
Thanks @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.i18nDomains
flag totrue
and addi18n.domains
to map any of your supportedlocales
to custom URLs://astro.config.mjs" import { defineConfig } from 'astro/config'; export default defineConfig({ site: 'https://example.com', output: 'server', // required, with no prerendered pages adapter: 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.astro
will be reachable at the URLhttps://example.com/about
. - The file
/fr/about.astro
will be reachable at the URLhttps://fr.example.com/about
. - The file
/es/about.astro
will be reachable at the URLhttps://example.es/about
. - The file
/ja/about.astro
will 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
d4b886141bb342ac71b1c060e67d66ca2ffbb8bd
Thanks @OliverSpeir! - Fixes an issue where images in Markdown required a relative specifier (e.g../
)Now, you can use the standard
![](img.png)
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:
- ![A cute dog](./dog.jpg) + ![A cute dog](dog.jpg) <!-- This dog lives in the same folder as my article! -->
Patch Changes
-
#9908
2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593
Thanks @lilnasy! - Improves http behavior relating to errors encountered while streaming a response. -
#9877
7be5f94dcfc73a78d0fb301eeff51614d987a165
Thanks @fabiankachlock! - Fixes the content config type path on windows -
#9143
041fdd5c89920f7ccf944b095f29e451f78b0e28
Thanks @ematipico! - Fixes an issue where the functiongetLocaleRelativeUrlList
wasn't normalising the paths by default -
#9911
aaedb848b1d6f683840035865528506a346ea659
Thanks @natemoo-re! - Fixes an issue where some adapters that do not include astart()
export would error rather than silently proceed