Aller au contenu
verdict:

Astro 7.1.0

notable

note: la synthèse et les notes de version sont en anglais

ok: mise à jour sûre

0 breaking change5 points clés

Adds deferRender for glob loader, chunked data store, scoped CSP directives and a paginate format option.

synthèse · uniquement d’après les notes de version · claude-haiku-5-5 · prompt v7

points clés

release-notesgithub.com/withastro/astro · 132 lignes
  1. ### Minor Changes
  2. - [#17302](https://github.com/withastro/astro/pull/17302) [`5f4dc03`](https://github.com/withastro/astro/commit/5f4dc0356f2c2ecf98fa88a257908c9226fac9f1) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Adds a new `deferRender` option to the `glob()` content loader
  3. When set to `true`, renderable entries (such as Markdown) are not rendered during content sync. Instead, rendering is deferred until the entry is actually rendered in a page, using the same on-demand path that `.mdx` files already use.
  4. This reduces memory usage during `astro build` for large collections whose rendered output is much larger than the source — for example, Markdown that uses heavy rehype plugins like `rehype-katex`. Such builds could previously run out of memory while storing the eagerly-rendered HTML for every entry.
  5. ```js
  6. // src/content.config.ts
  7. import { defineCollection } from 'astro:content';
  8. import { glob } from 'astro/loaders';
  9. const docs = defineCollection({
  10. loader: glob({ pattern: '**/*.md', base: 'src/content/docs', deferRender: true }),
  11. });
  12. ```
  13. By default `deferRender` is `false`, preserving the existing behavior of rendering entries eagerly during sync so their rendered HTML can be cached across builds.
  14. - [#17296](https://github.com/withastro/astro/pull/17296) [`30698a2`](https://github.com/withastro/astro/commit/30698a2ed525497cdc0fce16d25d1cde0c21473c) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new experimental `collectionStorage` option for controlling how the content layer persists its data store
  15. By default, Astro serializes the entire content layer data store to a single file (`.astro/data-store.json`). For very large content collections, this file can grow large enough to hit platform file-size limits.
  16. Set `experimental.collectionStorage: 'chunked'` to instead split the data store across many smaller, content-addressed files inside a `.astro/data-store/` directory, described by a manifest:
  17. ```js
  18. // astro.config.mjs
  19. import { defineConfig } from 'astro/config';
  20. export default defineConfig({
  21. experimental: {
  22. collectionStorage: 'chunked',
  23. },
  24. });
  25. ```
  26. Because each part file is named by a hash of its contents, unchanged parts keep the same name across builds and are not rewritten, and identical parts are deduplicated. The default value is `'single-file'`, which preserves the current behavior.
  27. - [#17214](https://github.com/withastro/astro/pull/17214) [`44c4989`](https://github.com/withastro/astro/commit/44c4989139e84951c6579db9975a659765cf2b6c) Thanks [@ematipico](https://github.com/ematipico)! - Adds support for the more specific CSP directives `script-src-elem`, `script-src-attr`, `style-src-elem`, and `style-src-attr` through a new `kind` option.
  28. Previously, [`CSP`](https://docs.astro.build/en/reference/configuration-reference/#securitycsp) was only scoped to generic `script-src`/`style-src` directives. Now each source or hash can be scoped to a narrower directive — for example, to allow inline `style` attributes (such as those from `define:vars` or Shiki) without loosening the policy for your `<style>` and `<link>` elements.
  29. #### Scoping sources and hashes in your config
  30. Each entry in `resources` and `hashes` can be an object with a `kind` property. Depending on whether you use `scriptDirective` or `styleDirective`, `"element"` targets `script-src-elem` or `style-src-elem`, `"attribute"` targets `script-src-attr` or `style-src-attr`, and `"default"` (the same as a bare string or hash) targets `script-src` or `style-src`.
  31. ```js
  32. // astro.config.mjs
  33. import { defineConfig } from 'astro/config';
  34. export default defineConfig({
  35. security: {
  36. csp: {
  37. scriptDirective: {
  38. resources: [{ resource: 'https://cdn.example.com', kind: 'element' }],
  39. },
  40. styleDirective: {
  41. resources: [{ resource: "'unsafe-inline'", kind: 'attribute' }],
  42. },
  43. },
  44. },
  45. });
  46. ```
  47. #### Scoping at runtime
  48. The same `kind` option is available on the runtime CSP API, where the existing methods now also accept an object:
  49. ```js
  50. ctx.csp.insertScriptResource({ resource: 'https://cdn.example.com', kind: 'element' });
  51. ctx.csp.insertStyleResource({ resource: "'unsafe-inline'", kind: 'attribute' });
  52. ```
  53. - [#17258](https://github.com/withastro/astro/pull/17258) [`84814d4`](https://github.com/withastro/astro/commit/84814d40bc43eb5827148305656050f26338df5a) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Adds a new `format()` option to the [`paginate`](https://docs.astro.build/en/reference/routing-reference/#paginate) utility. The `format()` option is a function that accepts the current URL of the page, and returns a new URL.
  54. For example, when your host only supports URLs using the `.html` extension, you can use `format()` to add it to the generated URLs:
  55. ```astro
  56. ---
  57. export async function getStaticPaths({ paginate }) {
  58. // Load your data with fetch(), getCollection(), etc.
  59. const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
  60. const result = await response.json();
  61. const allPokemon = result.results;
  62. // Return a paginated collection of paths for all items
  63. return paginate(allPokemon, {
  64. pageSize: 10,
  65. format: (url) => `${url}.html`,
  66. });
  67. }
  68. const { page } = Astro.props;
  69. ---
  70. ```
  71. - [#17331](https://github.com/withastro/astro/pull/17331) [`7db6420`](https://github.com/withastro/astro/commit/7db6420d482fc649886148acaf13e5fbf809db87) Thanks [@matthewp](https://github.com/matthewp)! - Adds a `--ignore-lock` flag to `astro dev` for starting a dev server without checking or writing the lock file, so it can run alongside an already-running dev server for the same project.
  72. The new instance is not tracked by `astro dev stop`, `astro dev status`, or `astro dev logs`. `--ignore-lock` cannot be combined with `--background` (or an auto-detected AI agent environment, which runs dev servers in the background automatically) or `--force`, since those rely on the lock file.
  73. ```shell
  74. astro dev --ignore-lock
  75. ```
  76. - [#17389](https://github.com/withastro/astro/pull/17389) [`16de021`](https://github.com/withastro/astro/commit/16de02130575c61eb294b382e09bc863cf935ec3) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Allows passing URL entrypoints when configuring the logger
  77. Matching other APIs like session drivers or font providers, the logger entrypoint can now be a URL:
  78. ```js
  79. import { defineConfig } from 'astro/config';
  80. export default defineConfig({
  81. logger: {
  82. entrypoint: new URL('./logger.js', import.meta.url),
  83. },
  84. });
  85. ```
  86. ### Patch Changes
  87. - [#17332](https://github.com/withastro/astro/pull/17332) [`4407483`](https://github.com/withastro/astro/commit/4407483e6f9e159164fec83c36d66259baa87e1f) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Fixes the JSON logger crashing with `process is not defined` in non-Node runtimes like Cloudflare's workerd. The JSON logger now uses `console.log`/`console.error` instead of `process.stdout`/`process.stderr`, matching the pattern already used by the console logger.
  88. - [#17391](https://github.com/withastro/astro/pull/17391) [`186a1e7`](https://github.com/withastro/astro/commit/186a1e74c2eb342ea35a73fc2c0b1930b3c08921) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where an integration could not update the logger with `updateConfig()`
  89. - [#17394](https://github.com/withastro/astro/pull/17394) [`d9f99e1`](https://github.com/withastro/astro/commit/d9f99e19e4045da75c7f38650a0f2eeb5c79892b) Thanks [@matthewp](https://github.com/matthewp)! - Fixes element-specific CSP directives to preserve the existing behavior of configured script and style resources
  90. - [#17374](https://github.com/withastro/astro/pull/17374) [`b2d1b3e`](https://github.com/withastro/astro/commit/b2d1b3e485c37fd9e1825310a71acb1e3d011094) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Fixes dev server returning 404 for `?url` imported assets when accessed via browser navigation
  91. - [#17390](https://github.com/withastro/astro/pull/17390) [`ed71eaf`](https://github.com/withastro/astro/commit/ed71eaf2b5eaa837de438eb252e8651a2aa086f6) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Removes an unused and undocumented generic from the `AstroLoggerDestination` type
  92. - [#17393](https://github.com/withastro/astro/pull/17393) [`092da56`](https://github.com/withastro/astro/commit/092da560eea77ee63a3e2c583c80d8238544e42b) Thanks [@matthewp](https://github.com/matthewp)! - Hardens generated transition styles, development metadata, and server island URLs when embedding dynamic values

voir sur githubimported 2026-09-28 via npm