github withastro/astro astro@4.3.0

latest releases: astro@4.15.8, @astrojs/mdx@3.1.7, astro@4.15.7...
7 months ago

Minor Changes

  • #9839 58f9e393a188702eef5329e41deff3dcb65a3230 Thanks @Princesseuh! - Adds a new ComponentProps type export from astro/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 browser
    • q + enter: quits the dev server
    • h + enter: prints all available shortcuts
  • #9764 fad4f64aa149086feda2d1f3a0b655767034f1a8 Thanks @matthewp! - Adds a new build.format configuration option: 'preserve'. This option will preserve your source structure in the final build.

    The existing configuration options, file and directory, either build all of your HTML pages as files matching the route name (e.g. /about.html) or build all your files as index.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 create index.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 the file configuration option.

    Rather than make a breaking change to allow build.format: 'file' to be more flexible, we decided to create a new build.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 becomes about.html
    • about/index.astro becomes about/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 the experimental.i18nDomains flag to true and add i18n.domains to map any of your supported locales 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 by getAbsoluteLocaleUrl() and getAbsoluteLocaleUrlList() will use the options set in i18n.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 URL https://example.com/about.
    • The file /fr/about.astro will be reachable at the URL https://fr.example.com/about.
    • The file /es/about.astro will be reachable at the URL https://example.es/about.
    • The file /ja/about.astro will be reachable at the URL https://example.com/ja/about.

    See our Internationalization Guide for more details and limitations on this experimental routing feature.

  • #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

Don't miss a new astro release

NewReleases is sending notifications on new releases.