astro

The web framework for content-driven websites. ⭐️ Star to support our work!

OTHER License

Downloads
8.9M
Stars
43K
Committers
807
astro - [email protected]

Published by astrobot-houston 8 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 8 months ago

Minor Changes

  • #9958 14ce8a6ebfc9daf951d2dca54737d857c229667c Thanks @Princesseuh! - Adds support for using a custom tag (component) for optimized images

    Starting from this version, when a tag called image is used, its src attribute will automatically be resolved if it's a local image. Astro will pass the result ImageMetadata object to the underlying component as the src prop. For non-local images (i.e. images using URLs or absolute paths), Astro will continue to pass the src as a string.

    // markdoc.config.mjs
    import { component, defineMarkdocConfig, nodes } from '@astrojs/markdoc/config';
    
    export default defineMarkdocConfig({
      tags: {
        image: {
          attributes: nodes.image.attributes,
          render: component('./src/components/MarkdocImage.astro'),
        },
      },
    });
    
    ---
    // src/components/MarkdocImage.astro
    import { Image } from 'astro:assets';
    
    interface Props {
      src: ImageMetadata | string;
      alt: string;
      width: number;
      height: number;
    }
    
    const { src, alt, width, height } = Astro.props;
    ---
    
    <Image {src} {alt} {width} {height} />
    
    {% image src="./astro-logo.png" alt="Astro Logo" width="100" height="100" %}
    
astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Minor Changes

  • #9987 0699f34d5c4481c027c4d29d73944f79f97008df Thanks @lilnasy! - Implements verification for edge middleware. This is a security measure to ensure that your serverless functions are only ever called by your edge middleware and not a third party.

    When edgeMiddleware is enabled, the serverless function will now respond with 403 Forbidden for requests that are not verified to have come from the generated edge middleware. No user action is necessary.

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Minor Changes

  • #9714 e2fe51c828dc7ea8204788e59e3953fe36c97836 Thanks @lilnasy! - Introduces a new config option, isr, that allows you to deploy your project as an ISR function. ISR (Incremental Static Regeneration) caches your on-demand rendered pages in the same way as prerendered pages after first request.

    To enable this feature, set isr to true in your Vercel adapter configuration in astro.config.mjs:

    export default defineConfig({
      output: 'server',
      adapter: vercel({ isr: true }),
    });
    

    Cache invalidation options

    By default, ISR responses are cached for the duration of your deployment. You can further control caching by setting an expiration time or prevent caching entirely for certain routes.

    Time-based invalidation

    You can change the length of time to cache routes this by configuring an expiration value in seconds:

    export default defineConfig({
      output: 'server',
      adapter: vercel({
        isr: {
          // caches all pages on first request and saves for 1 day
          expiration: 60 * 60 * 24,
        },
      }),
    });
    

    Manual invalidation

    To implement Vercel's Draft mode, or On-Demand Incremental Static Regeneration (ISR), you can create a bypass token and provide it to the isr config along with the paths to exclude from caching:

    export default defineConfig({
      output: 'server',
      adapter: vercel({
        isr: {
          // A secret random string that you create.
          bypassToken: '005556d774a8',
          // Paths that will always be served fresh.
          exclude: ['/api/invalidate'],
        },
      }),
    });
    
astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 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

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Minor Changes

Patch Changes

  • #9885 49e0c24d7f90d00e986533fcf546665967540ce7 Thanks @matthewp! - Better ignores for Vercel file-tracer

    The Vercel adapter has a file-tracer it uses to detect which files should be moved over to the dist/ folder. When it's done, it prints warnings for things that it detected that maybe should be moved.

    This change expands how we do ignores so that:

    • Ignores happen within dot folders like .pnpm.
    • @libsql/client is ignored, a package we know is not bundled.
astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Minor Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - @astrojs/[email protected]

Published by astrobot-houston 9 months ago

Patch Changes

astro - [email protected]

Published by astrobot-houston 9 months ago

Patch Changes

Package Rankings
Top 0.43% on Npmjs.org
Top 8.17% on Proxy.golang.org
Badges
Extracted from project README
CI License npm version astro version create-astro version @astrojs/react version @astrojs/preact version @astrojs/solid version @astrojs/svelte version @astrojs/vue version @astrojs/lit version @astrojs/node version @astrojs/vercel version @astrojs/cloudflare version @astrojs/partytown version @astrojs/sitemap version @astrojs/tailwind version @astrojs/alpinejs version @astrojs/mdx version @astrojs/db version @astrojs/rss version @astrojs/netlify version CII Best Practices Astro's sponsors.